Schleife durch Codename
06.04.2024 15:36:23
Steve
ich habe ein Problem bei dem ich einfach nicht weiter komme. Vielleicht hat jemand ein hilfreichen Tipp für mich.
Ich beschreibe mal was ich eigentlich möchte und dann wie ich testweise an die Sache herangegangen bin. Vielleicht bin ich auch einfach nur auf dem Holzweg und es gibt eine geschicktere Lösung.
Mein Grobes Ziel:
Ich habe 12 Sheets. Jedes Sheet entspricht einem Monat. Anhand von Datumswerten, bzw. deren Auswertungen sollen ab und bis zu einem gewissen Monat in den Sheets Daten ersetzt, ergänzt oder gelöscht werden. Also brauche ich eine Schleife durch die Monate.
Erste Versuche:
Um mich an die Lösung heranzutasten habe ich folgendes Versucht. Ich habe die 12 Sheets erstellt und wollte am liebsten mit den Codenamen arbeiten, da die durch den User nicht so einfach geändert werden können.
Damit meine Schleife später funktioniert, dachte ich mir, ist es das sinnvollste die Codenamen in einem Array abzulegen und von dort aufzurufen
Meine Idee war, im späteren Verlauf die Datumswerte in einen Monatsstring umzuwandeln und dann mit "tbl_" zu verketten oder alternativ die Position des Monats im Array -1 zu verwenden. Somit hätte ich Beginn und Ende für meine Schleife.
Nun wollte ich, zu Übungszwecken, eine einfache Schleife erstellen die zunächst einfach die Zelle A1 ausliest. Aber daran scheitere ich schon.
Hier mal mein Lösungsansatz:
Sub WerteAusBlätternAusgeben()
Dim SMonat As Worksheet
Dim Monate(1 To 12) As String
Monate(1) = "tbl_JAN"
Monate(2) = "tbl_FEB"
Monate(3) = "tbl_MAR"
Monate(4) = "tbl_APR"
Monate(5) = "tbl_MAI"
Monate(6) = "tbl_JUN"
Monate(7) = "tbl_JUL"
Monate(8) = "tbl_AUG"
Monate(9) = "tbl_SEP"
Monate(10) = "tbl_OKT"
Monate(11) = "tbl_NOV"
Monate(12) = "tbl_DEZ"
Debug.Print tbl_JAN.Range("A1").Value
Dim i As Integer
For i = LBound(Monate) To UBound(Monate)
Debug.Print Monate(i)
Set SMonat = ThisWorkbook.Sheets(Monate(i)).CodeName
Next i
End Sub
Hier habe ich das Array angelegt. Das Debug.Print zeigt mir, dass das Tabellenblatt ansprechbar ist. Es liegt also nicht an etwaigen Tippfehlern im Codenamen.
Grundsätzlich scheint es also zu funktionieren. Aber es sieht so aus, als wenn ich in Set = ..... nicht den Monatsnamen zusammensetzen kann. Ich hatte auch schon versucht den Monatsnamen vorher zusammenzusetzen, in einer Variablen zu speichern und dann zu verwenden. Aber ich erhalte immer den Laufzeitfehler 9.
Was mache ich da falsch? Kann mir da Bitte jemand weiterhelfen?
Liebe Grüße
Steve
PS.: Ich habe auf eine BeispielDatei verzichtet, da sie im Prinzip ja nichts enthält. Sollte eine gefordert sein, sende ich sie aber gerne nach.
Anzeige