Ich habe ein bisschen Code, wo ich, wenn ich einen Knopf drücke, ein Sub aufruft, das ein neues Blatt zu einer Arbeitsmappe hinzufügt und dann den Codenamen des Blattes ändert, um später in meinem Code leichter darauf zu verweisen . Das ist wie folgt:
%Vor%Das scheint zu funktionieren - JEDOCH - nur wenn ich das "Developer" -Fenster geöffnet habe oder vorher geöffnet hatte.
Wenn ich beim ersten Öffnen des Excel-Dokuments (nachdem ich das Fenster "Entwickler" nicht geöffnet habe) auf die Schaltfläche klicke, wird das Blatt hinzugefügt, es tritt jedoch der folgende Fehler auf und ändert nicht den Codenamen des Blattes:
Laufzeitfehler '9': Index außerhalb des Bereichs
Nur wenn ich auf Debug drücke und den Code nach dem Öffnen des "Developer" -Fensters erneut öffne, fügt er den Codenamen hinzu.
Gibt es einen Weg dazu, damit der Benutzer das Entwicklerfenster nicht öffnen muss, damit es richtig läuft?
Danke
@Comintern hat bereits eine funktionierende Lösung erhalten, aber dieser Code verschmutzt nicht Ihr Direktfenster und verwendet die versteckte _CodeName
-Eigenschaft, um den Blattnamen zu ändern, anstatt auf die vbComponents
-Auflistung zuzugreifen.
Es verwendet auch eine früh gebundene Worksheet
Zuweisung zu wks
und dann einen With
Block, da auf mehr als 1 Mitglied von wks
zugegriffen wird.
Interessanterweise ist die Platzierung der Verwendung des VBProject-Mitglieds wichtig.
%Vor% Wenn Sie möchten, dass der VBE geöffnet wurde, können Sie den Debugkontext dazu "tricksen", dies für Sie zu tun. Dies scheint alles zu tun, was das Projekt benötigt, um seine Indizierung zu aktualisieren, indem es das VBE.MainWindow
ins Leben ruft:
Bearbeiten:
Es scheint, dass es genügt, den Verweis auf VBE.MainWindow
zu erhalten (siehe Kommentare). Das funktioniert auch:
Tags und Links vba excel-vba rename runtime-error worksheet