Anzeige
Archiv - Navigation
1680to1684
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

ListObject nacheinander durchlaufen möglich?

ListObject nacheinander durchlaufen möglich?
26.03.2019 14:56:02
Berni
Hallo liebes Forum,
ich komme bei der Erstellung meines Dienstplans nicht weiter und erhoffe mir einen Tip von euch Spezialisten.
Der Dienstplan besteht aus zwei Dateien:
1.) Test.xlsm enthält den Dienstplan und jede Menge Beiwerk zur ausgewählten Organisationseinheit
2.) x99Datenbank.xlsx ist eine "dumme" Tabelle ohne Formatierungen und Makros
Diese Lösung habe ich gewählt, um in einem Behördensystem (!Excel 2010!) :-( "gleichzeitig" mit mehreren Anwendern arbeiten zu können.
Jeder User hat eine Datei 1. Beim Öffnen werden die aktuellen Daten aus der Datei 2 geladen und diese dann wieder geschlossen. Beim Schließen werden eigene Änderungen in die Datei 2 übertragen.
Nun zu meine Problem:
Die Datei 1 enthält 12 Tabellen für die Kalendermonate.
Für den Kopiervorgang von 2 zu 1 muss ich diese 12 Tabellen (tbl_Jan bis tbl_Dez) nacheinander ansprechen und dachte mir mit einem "Select Case" arbeiten zu können.
Das Kopieren funktioniert, wenn ich es so schreibe:
In dieser Zeile wird mit einer For Next Schleife die Personalnummer aus der tbl_Jan (=Tabelle für Januar in Datei 1) in Spalte 1 herausgesucht. Anschließend wird die ID in der Datei 2 gesucht ...
SuchID = Workbooks(p_strFileFront).Worksheets(p_strSheetFront).ListObjects("tbl_Jan").DataBodyRange(i, 1)
Um nicht für alle Monate den Code runterschreiben zu müssen, würde ich nun gern mit Select Case in Kombination mit For Next 1-12 die Tabellen der Monate nacheinander ansprechen.
so:
Dim tbl_MONAT As ListObject, c As Integer
'Monatstabellen durchzählen:
For c = 1 To 12
Select Case (c)
Case 1: Set tbl_MONAT = Worksheets(p_strSheetFront).ListObjects("tbl_Jan")
Case 2: Set tbl_MONAT = Worksheets(p_strSheetFront).ListObjects("tbl_Feb")
Case 3: Set tbl_MONAT = Worksheets(p_strSheetFront).ListObjects("tbl_Maerz")
Case 4: Set tbl_MONAT = Worksheets(p_strSheetFront).ListObjects("tbl_April")
Case 5: Set tbl_MONAT = Worksheets(p_strSheetFront).ListObjects("tbl_Mai")
Case 6: Set tbl_MONAT = Worksheets(p_strSheetFront).ListObjects("tbl_Juni")
Case 7: Set tbl_MONAT = Worksheets(p_strSheetFront).ListObjects("tbl_Juli")
Case 8: Set tbl_MONAT = Worksheets(p_strSheetFront).ListObjects("tbl_Aug")
Case 9: Set tbl_MONAT = Worksheets(p_strSheetFront).ListObjects("tbl_Sept")
Case 10: Set tbl_MONAT = Worksheets(p_strSheetFront).ListObjects("tbl_Okt")
Case 11: Set tbl_MONAT = Worksheets(p_strSheetFront).ListObjects("tbl_Nov")
Case 12: Set tbl_MONAT = Worksheets(p_strSheetFront).ListObjects("tbl_Dez")
Case Else
End Select

Nun bekomme ich aber in der von oben angepassten Zeile einen Fehler: "Index außerhalb des gültigen Bereichs"
SuchID = Workbooks(p_strFileFront).Worksheets(p_strSheetFront).ListObjects(tbl_MONAT).DataBodyRange(i, 1)
Habt ihr einen Tip für mich, wo mein Fehler liegt? Wie kann ich eine Funktion um meine Kopierfunktion bauen, die mir die Tabellen der einzelnen Monate nacheinander durchläuft?
Ich bedanke mich schon einmal im Voraus für die Mühe.
Schöne Grüße, Berni.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ListObject nacheinander durchlaufen möglich?
26.03.2019 15:35:27
Beverly
Hi Berni,
die ListObjekte ansprechen vielleicht nach diesem Prinzip:
    Dim tblMonat As ListObject, c As Integer
For Each tblMonat In ActiveSheet.ListObjects
Select Case tblMonat.Name
Case "tbl_Jan"
MsgBox "JAnuar"
Case "tbl_Feb"
MsgBox "Februar"
Case "tbl_Mrz"
MsgBox "März"
'.... hier die weiteren Namen
End Select
Next tblMonat


AW: ListObject nacheinander durchlaufen möglich?
26.03.2019 21:11:19
Berni
Guten Abend
und dir Karin vielen Dank für deine Idee. Der Code - für sich genommen - funktioniert wunderbar. Nur bekomme ich es nicht funktionstüchtig in meine Zeilen implantiert.
Sowohl bei meiner Lösung oben, wie auch bei Karins Lösung wird mir beim Debuggen in der Zeile
SuchID = Workbooks(p_strFileFront).Worksheets(p_strSheetFront).ListObjects(tbl_MONAT).DataBodyRange(i, 1)
der Fehler: "Index außerhalb des gültigen Bereichs" ausgegeben. Wenn ich dann mit der Maus in dieser gelb markierten Zeile über den Bereich (tbl_MONAT) schwebe zeigt er mir darunter den Wert tbl_MONAT = "tbl_Jan" an. Ich verstehe nun nicht, warum diese Fehlermeldung erscheint, bzw. wo mein Fehler liegt.
Hat jemand eine Idee?
Vielen Dank und Grüße!
Anzeige
AW: ListObject nacheinander durchlaufen möglich?
26.03.2019 21:19:00
Berni
Noch ein Zusatz:
interessanterweise funktioniert es, die Zeilen der Tabelle für Januar korrekt zu zählen:
Dim Count_i As Integer
Count_i = tbl_MONAT.ListRows.Count
MsgBox Count_i
Hier scheint Excel die richtige Tabelle anzusprechen. Jedoch bei den (...).ListObjects("tbl_MONAT").DataBadyRange (...) funktioniert dies nicht.
AW: ListObject nacheinander durchlaufen möglich?
26.03.2019 21:22:43
Berni
gerade gesehen:
(...).ListObjects(tbl_MONAT).DataBadyRange (...) funktioniert dies nicht.
ohne Anführungszeichen in den Klammern muss es geschrieben werden.
Ist das Problem nun geklärt...
26.03.2019 22:31:41
Beverly
...oder nicht? Falls nicht - lade bitte deine Mappe hoch.


Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige