Tabellenblätter Namen auslesen und anzeigen
#1
Hallo,

und zwar habe ich eine Userform mit einer Multipage.

Ich habe mehrere Listboxen, Textfelder, Button usw. Was soweit auch alles geklappt hat.

Es wird immer die aktive Mappe mit der Eingabemaske behandelt.

Ich möchte gern, wenn ich eine Mappe geöffnet habe. ( Aktive)

sollen mir die Arbeitsblätter Namen und der Mappen Name in deiner Listbox angezeigt werden.

Ohne dazu ein neues Blatt anzulegen wo die ganzen aufgelistet sind.

Danach möchte ich gern mit einer Comobox über der Eingabemaske zu den verschieden Tabellen wechseln deren Mappe Aktive ist.
Habe leider nichts im Internet finden können.

Vielleicht kann mit hier jemand weiterhelfen.

Gruß
Stephan
Top
#2
Hallo Stephan,

im Prinzip so:
Code:
Private Sub UserForm_Initialize()
'Variablendeklaration
Dim wshsBlaetter As Worksheet
'Schleife ueber alle Arbeitsblaetter der aktiven Mappe
For Each wshsBlaetter In ActiveWorkbook.Sheets
'Sheets
  'der Listbox1 den Blattname hinzufuegen
  ListBox1.AddItem wshsBlaetter.Name
'Ende Schleife ueber alle Arbeitsblaetter
Next
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • dragon2014
Top
#3
Vielen Dank für deine Antwort.

Funktioniert zum Teil dein Code.

Kann auch an mir liegen.

Also:

Ich starte die Datei Eingabemaske . Userform öffnet sich. Excel Tabelle verschwindet . Kann ich aber mit einem toggle button wieder umschalten. Habe nur Die Userform auf dem Desktop.
Mit deinem Code wird mir jetzt in der Listbox1 . 2 Tabellen der Aktuellen Mappe aufgelistet. Das ist die Mappe der Userform, weil die ja durch starten Aktiv ist.
Ersten mal vielen Dank . Genau das was ich wollte. Echt super.

Problem ist nun:
öffne ich mit dem Button jetzt eine Excel Datei wird diese geöffnet und wenn ich den toggle Button umschalte kann ich sehen das die neue Datei offen ist und Aktiv ist. Da sich auch Werte übertragen lassen.

Sehe aber immer noch in der Listbox1 die beiden Tabellen aber nicht die neuen von der geöffneten Datei.
Die Listbox1 soll nur zur Kontrolle für mich sein. Welche Tabellen offen sind.

Über eine Combobox die sich über der Eingabemaske befindet.
Möchte ich gerne zwischen den Aktiven Blättern die mir in der Listbox angezeigt werden auswählen können.
Top
#4
Hallo Stephan,

mein code läuft beim Start der Userform. Wenn Du die nach dem Öffnen der Excel-Datei startest, dann passt es. Wenn nicht, dann musst Du die Userform neu starten - dabei die neu geöffnete Excel-Datei aktiv lassen.
Wenn Du mit wechselnden Dateien arbeiten willst, während das userform geöffnet ist, dann löse auf dem userform ein Ereignis aus, was den code startet, z.B. mit einem Button oder bei Klick auf die Userform oder Listbox. Du müsstest die Listbox auch vorher leeren, sonst stehen die alten Daten noch drin.

Im Prinzip so:

Code:
Sub Userform_Initialise
call ListboxFuellen
End Sub

Sub Listbox1_Click() 'Oder CommandButton1_Click ...
call ListboxFuellen
End Sub

Sub ListboxFuellen
Listbox1.Clear
'... mein code zum füllen
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#5
Habe noch eine kurze Frage vorab:
Über der Eingabemaske habe ich eine Combobox.
Nun möchte ich gerne die Blätter die auch in der ListBox angezeigt werden in der Combobox haben. Der unterschied ist aber,
dass ich mit der Combobox dann auf die Blätter wechseln kann.
Den Rest schaff ich dann alleinSmile
So:
1. Teil

Private Sub CommandButton4_Click()
ActiveWorkbook.Close...........Aktive Mappe schließt sich
UserForm1.ListBox1.Clear...............und die Listbox1 Inhalte werden gelöscht.
End Sub

2.Teil

Private Sub CommandButton1_Click() Button heißt.... Datei öffnen/bearbeiten
Application.Dialogs(xlDialogOpen).Show ..................Dialog Dateiauswahl öffnet sich . und dann dein Code .

'Variablendeklaration
Dim wshsBlaetter As Worksheet
'Schleife ueber alle Arbeitsblaetter der aktiven Mappe
For Each wshsBlaetter In ActiveWorkbook.Sheets
'Sheets
'der Listbox1 den Blattname hinzufuegen
ListBox1.AddItem wshsBlaetter.Name
'Ende Schleife ueber alle Arbeitsblaetter
Next
End Sub

So habe ich das jetzt gemacht . Läuft perfekt.
Dein zweiten Code habe ich nicht gebraucht.
Der erste war total super von dir.
Es werden sogar die richtigen Namen angezeigt wie z.b August2014 = Tabelle1

Vielen Dank dafür .

Gruß
Stephan
Top
#6
Hallo Stephan,

das Füllen der Combobox geht wie bei der Listbox:
ComboBox1.AddItem wshsBlaetter.Name

Du kannst das Excel-Blatt sowohl beim Klick auf die Listbox als auch bei Auswahl aus der Combobox clever Smile wechseln:

Code:
Private Sub ComboBox1_Change()
Sheets(ComboBox1.Value).Activate
End Sub
Private Sub ListBox1_Click()
Sheets(ListBox1.Value).Activate
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste