Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1404to1408
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

Alle Blätter auflisten durch Combobox-Filter

Alle Blätter auflisten durch Combobox-Filter
21.01.2015 22:05:18
Andreas
Hallo Excelforum,
ich habe im Netz folgenden Code gefunden, der alle Blätter der Mappe im Tabellenblatt "Blätter" auflistet:

Sub blätter()
Dim blatt As Object
Dim zeile As Double
zeile = 3
For Each blatt In Sheets
Sheets("Blätter").Cells(zeile, 1).Value = blatt.Name
zeile = zeile + 1
Next blatt
End Sub
Die Blätter meiner Mappe sind unter anderem nach folgendem Syntax benannt:
01.01.2015-A1-jhhhg
01.02.2015-L2-hubib
01.02.2015
Desweiteren habe ich ein UserForm mit einer ComboBox die folgendermaßen befüllt wird:

Private Sub UserForm_Initialize()
With Me.ComboBox1
.RowSource = "Userform!A4:A44"
.ListIndex = -1
End With
End Sub
Private Sub ComboBox1_Change()
ComboBox1.Value = Format(ComboBox1.Value, ("dd.mm.yyyy"))
End Sub
Wie kann ich mir per VBA nur bestimmte Blätter auflisten lassen, nach folgenden Kriterien:
1. liste nur die Blätter in Spalte A der Tabelle "Blätter" deren Name folgendem Syntax entspricht: Inhalt der ComboBox-A*****
2. liste nur die Blätter in Spalte B der Tabelle "Blätter" deren Name folgendem Syntax entspricht: Inhalt der ComboBox-L*****
Beispiele wenn in ComboBox 20.01.2015 steht:
Blattname: 20.01.2015-A4-gvviu - soll in Spalte A aufgelistet werden
Blattname: 20.01.2015-L1-bububb - soll in Spalte B aufgelistet werden
Blattname: 20.01.2015-A2-zdjnbddh - soll in Spalte A aufgelistet werden
Blattname: 20.01.2015-L15-lkkjugvviu - soll in Spalte B aufgelistet werden
Blattname: 20.01.2015 - soll nicht aufgelistet werden, da nach dem Datum kein -A oder -L steht
Ich hoffe ich habe mich verständlich ausgedrückt und mir kann Jemand helfen. Das ist ein wenig zu hoch für mich.
Vielen Dank fürs lesen und die Hilfe!
mfg, Andreas

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

Betreff
Datum
Anwender
Anzeige
AW: Alle Blätter auflisten durch Combobox-Filter
22.01.2015 06:23:06
Oberschlumpf
Hi Andreas
hier, versuch mal (ungetestet)
Sub sbListing()
Dim lloRowA As Long, lloRowB As Long, liIdx As Integer
lloRowA = 1
lloRowB = 1
With userform1.ComboBox1
For liIdx = 0 To .ListCount - 1
If Len(.List(liIdx)) > 10 Then
If Mid(Right(.List(liIdx), Len(.List(liIdx)) - 10), 1, 2) = "-A" Then
Sheets("Blätter").Range("A" & lloRowA).Value = Right(.List(liIdx), Len(. _
List(liIdx)) - 10)
lloRowA = lloRowA + 1
End If
If Mid(Right(.List(liIdx), Len(.List(liIdx)) - 10), 1, 2) = "-L" Then
Sheets("Blätter").Range("A" & lloRowB).Value = Right(.List(liIdx), Len(. _
List(liIdx)) - 10)
lloRowB = lloRowB + 1
End If
End If
Next
End With
End Sub
Entferne alle Zeilenumbrüche. Die werden hier nur automatisch eingefügt, damits "schön" aussieht.
Hilfts?
Wenn nicht, zeig bitte ne Bsp-Datei, die genau so aussieht, wie du es hier beschreibst.
Ciao
Thorsten

Anzeige
AW: Alle Blätter auflisten durch Combobox-Filter
22.01.2015 10:04:38
Andreas
Hallo Thorsten,
vielen Dank für deine Mühe und Hilfe, leider passiert bei auslösen deines Codes gar nix.
Vieleicht habe ich ja auch nen Fehler gemacht.
Deshalb mal ne reduzierte Beispielmappe:
https://www.herber.de/bbs/user/95162.xlsm
Vielen Dank
mfg, Andreas

AW: Alle Blätter auflisten durch Combobox-Filter
22.01.2015 11:24:59
Oberschlumpf
Tja...
Hi Andreas
kommt davon, wenn ich antworte, obwohl noch keine Bsp-Datei vorhanden war und ich die Beschreibungen falsch verstanden hatte.
Ich hatte es so verstanden, dass die Einträge in der Combobox den vollständigen Blattnamen enthielten.
Dass in der CB nur das Datum steht, verstehe ich erst jetzt, wo ich deine Datei dazu sehe.
Ok, nich dein Problem, aber ich werde nu wirklich nur noch auf Fragen antworten, die gleich zu Beginn ne Bsp-Datei enthalten :-)
Ich schau mal, wie ich deine Bsp-Datei zum Laufen kriege + melde mich später wieder.
Ciao
Thorsten

Anzeige
AW: Alle Blätter auflisten durch Combobox-Filter
22.01.2015 13:21:25
Oberschlumpf
Hi Andreas
so, hier die Bsp-Datei zurück + Code geändert.

Die Datei https://www.herber.de/bbs/user/95167.xlsm wurde aus Datenschutzgründen gelöscht


Ein/mehrere Tabellen, die im Namen ein -L haben, hab ich in der Bsp-Datei nicht gefunden.
Aber ich denke, mein Code wird auch bei solchen Tabellennamen richtig reagieren.
Hilfts?
Ciao
Thorsten

fast richtig!
22.01.2015 13:43:07
Andreas
Hallo Thorsten,
nochmals vielen Dank für deine Mühe und Geduld. Ich benötige aber in der Tabelle Blätter den kompletten Tabellennamen, damit soll später weitergearbeitet werden. Ich habe auch mal eine Tabelle mit -L eingeplegt.
Also in der Beispieldatei müsste dann in Spalte A
22.01.2015-A3-gggg
22.01.2015-A4-Name5
und in Spalte B
22.01.2015-L4-Name5
stehen.
https://www.herber.de/bbs/user/95169.xlsm
Nochmals Danke für die Mühe!
mfg, Andreas

Anzeige
AW: fast richtig!
22.01.2015 14:26:22
Oberschlumpf
Hi Andreas
das ist kein Problem, aber....
in deiner Erstfrage hast du das geschrieben:
Wie kann ich mir per VBA nur bestimmte Blätter auflisten lassen, nach folgenden Kriterien:
1. liste nur die Blätter in Spalte A der Tabelle "Blätter" deren Name folgendem Syntax entspricht: Inhalt der ComboBox-A*****
2. liste nur die Blätter in Spalte B der Tabelle "Blätter" deren Name folgendem Syntax entspricht: Inhalt der ComboBox-L*****

Auf das fettgedruckte bezogen, ging ich davon aus, dass du nur den Blattnamen ohne führendes Datum haben willst, weil du es in deiner Erklärung auch nicht mit angegeben hattest...hmm
Ok, hier die Korrektur:
Ändere diese beiden Codezeilen

Sheets("Blätter").Range("A" & lloRowA).Value = Right(liwksTable.Name, Len(liwksTable.Name) - 10) _
Sheets("Blätter").Range("A" & lloRowB).Value = Right(liwksTable.Name, Len(liwksTable.Name) - 10) _

um in

Sheets("Blätter").Range("A" & lloRowA).Value = liwksTable.Name
Sheets("Blätter").Range("A" & lloRowB).Value = liwksTable.Name
Hilfts?
Ciao
Thorsten

Anzeige
AW: fast richtig!
22.01.2015 14:39:42
Andreas
Hallo Thorsten,
jetzt hats geklappt, habe noch nen kleinen Flüchtigkeitsfehler gefunden:
Sheets("Blätter").Range("A" & lloRowA).Value = liwksTable.Name
Sheets("Blätter").Range("A" & lloRowB).Value = liwksTable.Name
habe ich in B geändert.
Jetzt funktioniert es super.
Danke für die super Hilfe!
Einen schönen Tag noch!
mfg, Andreas

24 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige