ich suche nach einer Möglichkeit, das umbenennen von Tabellenblattnamen zu verhindern.
Im VBA wird z.B. eine Tabelle aufgerufen ( Sheets(„Tabelle3“).Select ).
Wenn man nun den Blattnamen ändert funktioniert das Makro logischerweise nicht mehr.
Wie erreiche ich in VBA das ich immer die Tabelle3 anspreche auch wenn sich der Name
geändert hat.
Habe schon mit Worksheet statt Sheet herumprobiert, aber bisher ohne Erfolg.
ich suche nach einer Möglichkeit, das umbenennen von
Tabellenblattnamen zu verhindern.
Im VBA wird z.B. eine Tabelle aufgerufen (
Sheets(„Tabelle3“).Select ).
Die dritte Tabelle im Workbook ist
ActiveWorkbook.Worksheets(3)
oder
Sheets(3).Select
BTW. Warum muss die Tabelle selektieren?
Schau Dir bitte mal das Eigenschaften-Fenster von Deiner „Tabelle 3“ in VBA an. Dort findest Du zwei Eigenschaften:
(Name)
Diese Eigenschaft gibt den Namen der Tabelle in VBA zurück
Name
Diese Eigenschaft gibt den vom Benutzer veränderbaren Namen zurück.
In Deinem VBA-Code kannst Du direkt Tabelle 3 ansprechen, z.B. Tabelle3.Cells…
Dieser Name kann vom Benutzer von Excel aus nicht verändert werden und Du bist unabhängig von der Verwendung der Indizes.
Es verhält sich so, dass Du den Namen in der „(Name)“-Eigenschaft selbst festlegen kannst. Wenn Deine Tabelle momentan „Tabelle2“ heisst, dann ist das der Standard-Name, den VBA dafür festgelegt hat. Wenn Du den Namen als VBA-Programmierer nun ändern willst, dann kannst Du das selbsverständlich tun.
Ein englisches Excel wird für die (Name)-Eigenschaft keinen anderen Wert erwarten.
Aber Achtung, es gibt einige Sachen, die befolgt werden müssen, wenn Du die (Name)-Eigenschaft ändern willst:
Verwende keine Umlaute, die gibt es natürlich im Englischen nicht.
Du musst dich an die Bedingungen für die Namensvergabe halten: Eine Name darf nicht mit einer Zahl beginnen und nicht mit einem Zeichen.
3.Wenn Du die (Name)-Eigenschaft geändert hast, musst Du natürlich auch den Code anpassen.
Vielleicht noch eine Erleichterung: Wenn Du Dich im VBA-Code-Fenster von Deiner Tabelle2 befindest, dann kannst Du den Code verkürzen. Z.B.:
Tabelle2.Cells(1, 1) = „Bla“
ist dann dasselbe wie
Cells(1, 1) = „Bla“
weil Du dich ja im Code-Fenster von Tabelle2 befindest.