attivare foglio di lavoro attraverso combobox

Salve a tutti,

in un file excel ho creato una form con una combobox.

Sto cercando di capire come popolare la combobox ed al cambio del valore si attivi il foglio di lavoro con il relativo nome.

Esempio;

nome form: form_1

nome combobox: combobox_1

valori presenti nella combobox : 1,2,3,4,5,6,7,8,9,10fogli di lavoro: 1,2,3,4,5,6,7,8,9,10

Grazie per la Vs immensa professionalità

 

Informazioni domanda


Ultimo aggiornamento febbraio 27, 2018 Visualizzazioni 544 Si applica a:
Risposta

Ciao peppeZH,

Non ho scaricato il file ma oltre alle risposte di Mauro e Andrea, se vuoi creare un Workbook con un foglio per ogni mese di un intervallo, diciamo, di 2013-2022 (ossia, 10 anni), prova qualcosa come segue.

Alt-F11 per aprire l'editor di VBA

Alt-IM per inserire un nuovo modulo di codice

Nel nuovo modulo vuoto, incolla il seguente codice:

'========>>
Option Explicit

'--------->
Public Sub Tester()
    Dim WB As Workbook
    Dim SH As Worksheet
    Dim i As Long, j As Long
    Dim dDate As Date
    Dim sStr As String
    Const iSheets As Long = 10 * 12  '\\10 anni x 12 mesi
    Const StartDate As Date = #1/1/2013#

    Set WB = Workbooks.Add
    With WB
        i = .Sheets.Count
        For j = 1 To iSheets
            Set SH = .Worksheets.Add(after:=.Sheets(.Sheets.Count))
            dDate = DateAdd("m", j - 1, StartDate)
            sStr = Format(dDate, "mmm yyyy")
            SH.Name = sStr
        Next j
    End With
End Sub
'<<========

Se poi vuoi creare una Userform per selezionare qualsiasi dei 120 fogli del nuovo workbook, nel nuovo workbook, inserisci un modulo standard (Modulo1). Nel modulo, incolla il codice:

'==========>>
Option Explicit

'---------->>
Public Sub SelezionareFoglio()
    UserForm1.Show
End Sub
'<<==========

Inserisci una Userform nel nuovo workbook e crea due ComboBox (ComboBox1 e ComboBox2) e due pulsanti (CommandButton1 e CommandButton2). Nel modulo di codice della Userform, incolla il seguente codice:

'=========>
Option Explicit
Private WB As Workbook
Private arr() As Variant

'--------->
Private Sub UserForm_Initialize()
    Dim SH As Worksheet
    Dim iYears As Long, i As Long, j As Long
    Dim dDate As Date, aDate As Date
    Dim sStr As String, aStr As String
    Const StartDate As Date = #1/1/2013#                  
    Const EndDate As Date = #12/1/2023#

    iYears = Year(EndDate) - Year(StartDate)
    dDate = StartDate
    Set WB = ThisWorkbook

    With Me
        For i = 1 To iYears
            dDate = DateAdd("yyyy", i - 1, StartDate)
            sStr = Format(dDate, "yyyy")
            Me.ComboBox1.AddItem sStr
        Next i

        ReDim arr(1 To 12)
        For j = 1 To 12
            aDate = DateSerial(Year(Date), j, 1)
            aStr = Format(aDate, "mmmm")
            arr(j) = aStr
            Me.ComboBox2.AddItem aStr
        Next j

        .Caption = "Sheet Selector"
        .CommandButton1.Caption = "Seleziona Foglio"
        .CommandButton2.Caption = "Chiudi"
    End With
End Sub

'--------->
Private Sub ComboBox2_Change()
    Dim myYear As Long
    Dim i As Long
    Dim sStr As String

    myYear = Me.ComboBox1.Value
    For i = 1 To 12
        sStr = DateAdd("m", 1, #12/31/2014#)
    Next i
End Sub

'--------->
Private Sub CommandButton1_Click()
    Dim SH As Worksheet
    Dim dDate As Date
    Dim Res As Variant
    Dim sStr As String

   Res = Application.Match(Me.ComboBox2.Value, arr, 0)
    dDate = DateSerial(CLng(Me.ComboBox1.Value), Res, 1)
    sStr = Format(dDate, "mmm yyyy")
    
    With Me.ComboBox1
        If .ListIndex >= 0 Then
            Set SH = WB.Sheets(sStr)
            With SH
                .Visible = xlSheetVisible
                .Select
            End With
        End If
    End With
End Sub

'--------->
Private Sub CommandButton2_Click()
    Unload Me
End Sub
'<<========

Per facilmente utilizzare la Userform, potresti assegnare la macro SelezionareFoglio alla barra di accesso rapido (QAT). 

- quanti fogli di lavoro può contenere un file excel????

Il numero di fogli è limitato solo dalla memoria disponibile. In linea di massima, 120 fogli non dovrebbero rappresentare un problema. Tuttavia, come con qualsiasi cartella di lavoro, dipende dal contenuto!

===

Regards,

Norman

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.

Risposta

grazie Norman per la disponibilità e professionalità

alcuni consigli, suggerimenti, soluzioni per poter creare un file del tipo:

l'obiettivo è di popolare i vari mesi (fogli di lavoro) di ogni anno inserendo tanti fogli di lavoro per quanti sono i mesi e gli anni, ipotizziamo da gennaio 2013 a dicembre 2023, quindi 12 mesi per 10 anni= 120 fogli di lavoro.

- quanti fogli di lavoro può contenere un file excel????

<cut>

Mio personalissimo parere, non richiesto, ne chiedo scusa. Tempo buttato. Queste cose si fanno con un db (Access/SQLServer Express/altro). Al limite si fa poi un'interfaccia in Excel verso i dati che si trovano nel db.

2013-2023 sono 11 (undici) anni, non 10. Quindi 132 fogli, non 120.

Qui:

http://office.microsoft.com/it-it/excel-help/specifiche-e-limiti-di-excel-HP010073849.aspx

puoi vedere il numero dei fogli possibili in un file di Excel e vale per tutte le versioni di Excel.

Questa è comunque una possibile soluzione, da adattare e completare:

http://www.maurogsc.eu/esempiforum14/undicianni.zip

--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.