ich habe da zwei (hoffentlich) kleine Probleme und hoffe auf eure Hilfe.
Zur Laufzeit erstelle ich mehrere Tabellenblätter, die benannt werden.
Ebenfalls zur Laufzeit schreibe ich Code in den VBA Editor dieser Tabellenblätter. Das klappt auch, wenngleich ich auch schon hier eine "Index außerhalb des gültigen Bereichs" Meldung erhalte, die seltsamerweise problemlos durchläuft, wenn ich die Ausführung des Codes dann fortsetze. Und das wäre Problem 1:
Mein Programm läuft etwa so:
ErstelleTabellenblatt
FülleBlattMitDaten
AddCodeZuTabellenblatt
Und obwohl AddCodeToTabellenblatt erst ausgeführt wird, nachdem ErstelleTabellenblatt durch ist, scheint er den eindeutigen Namen des Tabellenblatts hier noch nicht zu finden.
Aber weiter im Text:
Den Code, den ich in das neue Tabellenblatt schreibe, sieht etwa so aus:
Private Sub Worksheet_Change(ByVal Target As Range)
Worksheets("MeinTabellenblatt").Activate
Dim WSName As Object
WSName = ThisWorkbook.Sheets("MeinTabellenblatt").Name
Application.DisplayAlerts = False
Application.EnableEvents = False
If Not Intersect(Target, Range("$K$7:$K$90")) Is Nothing Then
Call WSName.MeinMakro
End If
Application.DisplayAlerts = True
Application.EnableEvents = True
End Sub
Der Code Editor läd mein Ändern einer Zelle im o.g. Bereich "Call WSName.MeinMakro", meckert aber auch an dieser Stelle:
Objektvariabel oder With Blockvariable nicht festgelegt.
Ich habe auch schon versucht, WSName als String auszulesen. Leider erhalte ich damit nur "MeinTabellenblatt" als Ergebnis und damit gibt VBA bei Call WSName.MeinMakro den Fehler "ungültiger Bezeichner" aus.
Das wäre Problem 2. Ich hoffe so sehr, dass jemand die Lösung kennt.
Viele Grüße
Holger