Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1916to1920
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dropdown zum Öffnen von Tabellenblättern

Dropdown zum Öffnen von Tabellenblättern
18.01.2023 16:49:16
Tabellenblättern
Hallo zusammen,
ich bin noch ganz neu in diesem Forum und hoffe ihr könnt mir bei meinem Anliegen helfen:
Ich würde gerne ein Dropdown Menü auf dem "Start" Arbeitsblatt erstellen, wo alle Titel der anderen erstellten Arbeitsblätter (Kurse) aufgelistet sind.
Dazu kommt, dass ich gerne bei der Auswahl des jeweiligen Arbeitsblattes aus dem Dropdown Menü, auch den jeweiligen Inhalt quasi im "Start"- Arbeitsblatt vorliegen habe.
Auch sollen alle anderen Arbeitsblätter dann ausgeblendet werden, außer ich befinde mich wieder im "Start" Arbeitsblatt.
Ich habe es bereits geschafft (in einer anderen Datei) mithilfe von Makros eine User-Form zu erstellen und das Dropdown Menü einzurichten.. Bei der Auswahl des jeweiligen Kurses springe ich jedoch auf das andere Arbeitsblatt.. Das würde ich gerne vermeiden und wie bereits beschrieben den Inhalt quasi in den Start "kopieren".
Dazu der habe ich folgenden Code:
Private Sub UserForm_Initialize()
    Dim I As Long
    Me.ComboBox1.Clear
    For I = 1 To Sheets.Count
        Me.ComboBox1.AddItem Sheets(I).Name
    Next
    Me.ComboBox1.Value = ActiveSheet.Name
End Sub
Private Sub ComboBox1_Change()
ActiveWorkbook.Sheets(Me.ComboBox1.Value).Activate
End Sub
Ich bedanke mich schonmal im Voraus! :-)

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dropdown zum Öffnen von Tabellenblättern
18.01.2023 18:17:57
Tabellenblättern
Verzichte auf 'Additem'.
Private sub Userform_Initialize()
   ReDim sn(Sheets.Count-1)
    For Each it In Sheets
       sn(it.Index-1) = it.Name
    Next
   Combobox1.List=sn
End Sub

AW: Dropdown zum Öffnen von Tabellenblättern
18.01.2023 19:27:32
Tabellenblättern
Moin Ramo,
das Setzen von einem Wert in der ComboBox löst das Ereignis "ComboBox1_Change".
Das kann vermieden werden, in dem die Ereignis-Aufruf unterdrückt werden:
Private Sub UserForm_Initialize()
Dim I As Long
    Application.EnableEvents = False
    Me.ComboBox1.Clear
    For I = 1 To Sheets.Count
        Me.ComboBox1.AddItem Sheets(I).Name
    Next
    Me.ComboBox1.Value = ActiveSheet.Name
    Application.EnableEvents = True
End Sub
Private Sub ComboBox1_Change()
    ActiveWorkbook.Sheets(Me.ComboBox1.Value).Activate
End Sub
Leider funktioniert sowas nicht innerhalb eines Userforms. Da muss man ein anderen Trick verwenden.
Aber wenn ich dein Anliegen richtig verstehe, möchtest Du diese ComboBox eher direkt auf dem Blatt. Aktiviere den Register "Entwicklertools" im Menüband und hole dort unter "Einfügen" ein ActiveX-kombinationsfeld (en: ComboBox). Rechtklick drauf und "Code anzeigen" auswählen. Code darin pasten. Da funktioniert EnableEvents = False
VG
Yal
Anzeige
AW: Dropdown zum Öffnen von Tabellenblättern
18.01.2023 20:31:24
Tabellenblättern
Private sub Userform_Initialize()
   ReDim sn(Sheets.Count-1)
    For Each it In Sheets
       sn(it.Index-1) = it.Name
    Next
   Combobox1.List=sn
   caption=" "
   combobox1.value=activesheet.name
   caption=""
End Sub
Private Sub Combobox1_Change()
   if caption>" "and combobox1.listindex>-1 then sheets(combobox1.value).activate
End Sub

AW: Dropdown zum Öffnen von Tabellenblättern
18.01.2023 20:56:26
Tabellenblättern
Dann ist in dem Fall "Caption" nicht anderes als eine globale Variable. Da kann man glatt eine boolsche Variable nehmen.
Von dem Umweg über einen Array bin ich weiterhin nicht überzeugt. Wir reden hier nicht von millionen Einträge sondern max 255 Blätter.
Ein leere ComboBox kann mit On Error abfangen.
Variable-Deklaration sollte man auf "erforderlich" stellen (in VB-Editor, "Extras", "Optionen")
Public Change_erlaubt As Boolean
Private Sub Userform_Initialize()
Dim W As Worksheet
    With Me.ComboBox1
        .Clear
        For Each W In Worksheets
            .AddItem = W.Name
        Next
        
        Change_erlaubt = False 'könnte sogar entfallen, da vor der Initialisierung auf Default-Zustand "False". 
        .Value = ActiveSheet.Name
        Change_erlaubt = True
    End With
End Sub
Private Sub ComboBox1_Change()
    On Error Resume Next
    If Change_erlaubt Then Worksheets(ComboBox1.Value).Activate
End Sub
VG
Yal
Anzeige
AW: Dropdown zum Öffnen von Tabellenblättern
18.01.2023 22:06:42
Tabellenblättern
Public ?
Dim (oder Private) reicht in diesem Fall.
Deklaration von local variables ist völlig redundant.
Man kann in einem Userform sowieso kein Public Variable deklarieren.
Eine neue Variable ist redundant, die Userform Eigenschaften schaffen das ebenso gut; und das Userform ist schon im Arbeitsspeicher.
Die Eigenschaft 'Caption' ist 'Public', im Gegensatz zu der Private Variable.
Verwenden von .List statt .additem ist immer eine gute Idee (.clear is dann implizit). Sehr schnell wird .Additem spürbar langsam.
De Referenzierung Me ist völlig überflüssig wenn der Code richtig plaziert wird: im Userform Makromodul.
'On error resume next' ist hier eine aspezifische Faulheit.
Man sollte die Bedingungen specifizieren, das ist hier sher einfach möglich.
Anzeige
AW: Dropdown zum Öffnen von Tabellenblättern
19.01.2023 15:22:06
Tabellenblättern
Hallo zusammen,
danke euch erstmal für eure Hilfe und die Zeit die ihr euch genommen habt. :-)
Ich bin leider ganz neu im Bereich VBA, deshalb verstehe ich nicht alles so schnell. Ich habe die Codes versucht zu übernehmen, allerdings funktionierte das leider nicht :/.
Ich habe nun über das eingefügte ActiveX Kombinationsfeld es geschafft die Dropdown Funktion mit allen Namenblättern eingerichtet. Jetzt fehlt mir nur noch, dass bei Auswahl des jeweiligen Blattes, sich der jeweilige Inhalt direkt unter dem Kombinationsfeld öffnet.
Das ist der Code den ich jetzt verwende:
Private Sub ComboBox1_Change()
End Sub
Private Sub Worksheet_Activate()
Me.ComboBox1.Clear
Dim Sheet
For Each Sheet In ThisWorkbook.Sheets
    Me.ComboBox1.AddItem Sheet.Name
    Next Sheet
End Sub
Der Link zur Datei: https://www.herber.de/bbs/user/157376.xlsm
Ich hoffe ihr könnt mir da weiterhelfen, da ich die Datei bis morgen brauche.
Vielen herzlichen Dank!
Ramo
Anzeige
AW: Dropdown zum Öffnen von Tabellenblättern
22.01.2023 07:14:14
Tabellenblättern
Hi,
bist du noch immer an einer Lösung interessiert?
Dein erwähntes "morgen", zu dem du die Datei gebraucht hast, ist ja schon vorbei.
Ciao
Thorsten

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige