seit Tagen versuche ich mit anleitungen aus dem Internet, meine vorhandenen Tabellen (24Stück) in eine Userform zu bekommen. Entweder bekomme ich gar nichts angezeigt oder alle auf einmal.
Ausgangspunkt habe ich in einer Testtabelle angefügt!
Ich habe eine Tabelle mit 24 Tabellenblättern. Die Blende ich alle aus.
In der Userform2021 sollen die 12 Blätter für das Jahr 2021 angezeigt werden (In meinem Fall Tabelle1 bis Tabelle12) und in der anderen Userform 2022 die 12 Blätter für das Jahr 2022. (Tabelle13 bis Tabelle24)
Ich habe in meiner Testtabelle alle VBA Codes wieder entfernt, ist also Jungfräulich. Vieleicht setzt mir einer den passenden Code da rein. Ich bin ein absoluter VBA Anfänger und bekomme das nicht hin. Habe es auch mit listenfeld versucht, vergeblich.
Perfekt wäre auch noch wenn man sie anklicken kann und sie sich dann öffnet.
eine Datei mit einen vielen Arbeitsblätter, wo nichts drinsteht?? Wer soll da mit Code helfen. Vielleicht mache es so:
- Markiere jede Tabelle systematisch durch alle Arbeitsblätter und mache eine intelligente Tabelle draus. Benenne der Einfachheit halber die Tabellen mit den gleichen Namen deiner Arbeitsblätter. Damit kommst du mit einer Combobox zurecht. Sollte auf deinen Arbeitsblättern mehrere Tabellen als nur jeweils eine vorhanden sein, brauchst du auf jeden Fall eine 2. Combobox deren Auswahl weiteren Codes bedarf. - Zeichne eine Combobox in deine Userform und fülle Diese mit den Namen der Tabellenblätter. -Zeichne eine Listbox - Im letzten Schritt kann man die entsprechende Tabelle in ein Array laden und mittels listbox1.list mit diesem Code die Listbox füttern:
Code:
Option Explicit Dim Tbl_BlattName As Variant
Private Sub ComboBox1_Change() Tbl_BlattName = ComboBox1.Text ListboxLaden End Sub
Private Sub UserForm_Initialize() Dim Wks As Worksheet, i As Integer, Tbl_Blatt() As String For Each Wks In ThisWorkbook.Worksheets ReDim Preserve Tbl_Blatt(i) Tbl_Blatt(i) = Wks.Name i = i + 1 Next Wks For i = LBound(Tbl_Blatt) To UBound(Tbl_Blatt) ComboBox1.AddItem Tbl_Blatt(i) Next i
End Sub
Private Sub ListboxLaden() Dim arrTab As Variant If Not Tbl_BlattName = "" Then arrTab = Sheets(Tbl_BlattName).ListObjects(Tbl_BlattName).DataBodyRange
With ListBox1 .Clear .List = arrTab End With End If End Sub
Das ist ein möglicher, aber stark vereinfachte Lösungsweg.
Ich versuche das jetzt mal so umzusetzen wie du es mir geschrieben hast. PS Das in den Tabellenblättern nix drin steht ist mir gar nicht aufgefallen....sorry
Ich schau mir das nach dem Frühstück mal an und bau dir nötige Anpassungen noch ein. Es war ja eigentlich nur stark vereinfachter Code, um einen möglichen Lösungsweg aufzuzeigen.
Hallo Uwe, das ist schonmal die richtige Richtung. Nur ist es so.
Alle 24 Tabellenblätter werden später ausgeblendet, und es soll dann nur nach Auflistung des Jahres 2021 oder 2022 der einzelne Monat selektiert werden und geöffnet werden können. Hatte mich da wohl falsch rübergebracht.
Habe die Tabelle noch mal angehängt, mit Beschriftung der einzelnen Blätter. Vielen Dank und großes Lob für deine Hilfe!!!
Nach Auswahl des Kalenderjahres werden die Tabellenblätter in die Comobox geladen, wo dann der entsprechende Monat ausgewählt werden kann. Nach der Auswahl des Monats wird das entsprechende Tabellenblatt als einziges angezeigt. Autostart bzw. F2 bleiben. Das sollte für deine Zwecke ausreichend sein.