Excel: Definierten Namen im Script adressieren

Salve Kollegen,

in einem VBA-Script lassen sich Definierte Namen über Range(„Selbstgewählter Definierter Name“) ansprechen, offenbar aber nur aus Modulen heraus. Befindet sich das Script in einer Tabelle (also in einem Tabellenblatt-Objekt), funktioniert dieser Zugriff nicht.

Wie kann ich in einem Script, das in einem Tabellenblatt untergebracht ist, auf „Definierte Namen“-Werte zugreifen?

Merci & ein schönes Wochenende ;o)
-Rob.

Grüezi Rob

in einem VBA-Script lassen sich Definierte Namen über
Range(„Selbstgewählter Definierter Name“) ansprechen, offenbar
aber nur aus Modulen heraus. Befindet sich das Script in einer
Tabelle (also in einem Tabellenblatt-Objekt), funktioniert
dieser Zugriff nicht.

Wie kann ich in einem Script, das in einem Tabellenblatt
untergebracht ist, auf „Definierte Namen“-Werte zugreifen?

Das kommt IMO darauf an ob der Name gobal in der Mappe oder lokal im Tabellenblatt definiert worden ist.

Globale Namen können IMO auch aus dem Codemodul eines Tabellenblattes heraus genau so angesprochen werden.

Wie also sind deine Namen vergeben?

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Servus Thomas,

Das kommt IMO darauf an ob der Name gobal in der Mappe oder
lokal im Tabellenblatt definiert worden ist.

Globale Namen können IMO auch aus dem Codemodul eines
Tabellenblattes heraus genau so angesprochen werden.

Wie also sind deine Namen vergeben?

Ich habe einfach die Zellkoordinate (z. B. „D1“) durch den Namen ersetzt. Der Range(„NameXYZ“)-Zugriff funktioniert dann modulweit.

Bye :o)
-Rob.

Grüezi Rob

Das kommt IMO darauf an ob der Name gobal in der Mappe oder
lokal im Tabellenblatt definiert worden ist.

Globale Namen können IMO auch aus dem Codemodul eines
Tabellenblattes heraus genau so angesprochen werden.

Wie also sind deine Namen vergeben?

Ich habe einfach die Zellkoordinate (z. B. „D1“) durch den
Namen ersetzt. Der Range(„NameXYZ“)-Zugriff funktioniert dann
modulweit.

Ich meine nicht wo Du den Namen verwendest, sondern wie Du selbigen erstellt hast.

Ansonsten musst Du die Referenz des Tabellenblattes mit angeben.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Salve Thomas,

Wie also sind deine Namen vergeben?

Ich habe einfach die Zellkoordinate (z. B. „D1“) durch den
Namen ersetzt. Der Range(„NameXYZ“)-Zugriff funktioniert dann
modulweit.

Ich meine nicht wo Du den Namen verwendest, sondern wie Du
selbigen erstellt hast.

Naja, steht doch da: ich habe die Zellkoordinate durch den Namen ersetzt. Ganz genau: Ich habe ein Tabellenblatt angeklickt, die bestimmte Zelle angeklickt, dann habe ich das kleine Fenster links oben angeklickt in dem „A5“ stand, habe selbiges mit „NameXYZ“ überschrieben und ab dann konnte ich in der gesamten Mappe mit der Variablen „NameXYZ“ rechnen (z. B. =WENN(NameXYZ>10;„viel“;„wenig“)).

Oder verstehe ich Deine Frage falsch?

Ansonsten musst Du die Referenz des Tabellenblattes mit
angeben.

Okay, wenn ich jedesmal ThisWorkbook.Worksheets(„Blatt drei“).Range(„NameXYZ“) verwende, klappts auch. Aber geht das nicht auch eleganter?

Abendliche Grüße :o)
-Rob.

Grüezi Rob

Wie also sind deine Namen vergeben?

Ich habe einfach die Zellkoordinate (z. B. „D1“) durch den
Namen ersetzt. Der Range(„NameXYZ“)-Zugriff funktioniert dann
modulweit.

Ich meine nicht wo Du den Namen verwendest, sondern wie Du
selbigen erstellt hast.

Naja, steht doch da: ich habe die Zellkoordinate durch den
Namen ersetzt. Ganz genau: Ich habe ein Tabellenblatt
angeklickt, die bestimmte Zelle angeklickt, dann habe ich das
kleine Fenster links oben angeklickt in dem „A5“ stand, habe
selbiges mit „NameXYZ“ überschrieben und ab dann konnte ich in
der gesamten Mappe mit der Variablen „NameXYZ“ rechnen (z. B.
=WENN(NameXYZ>10;„viel“;„wenig“)).

Oder verstehe ich Deine Frage falsch?

Nein, denn nun ist es klar, wie Du vorgegangen bist.

Zielkoordinate durch Namen ersetzen könnte ja auch heissen, dass Du in einer Formel ‚D1‘ mit dem sich darauf beziehenden Namen ersetzt hast…

Ansonsten musst Du die Referenz des Tabellenblattes mit
angeben.

Okay, wenn ich jedesmal ThisWorkbook.Worksheets(„Blatt
drei“).Range(„NameXYZ“) verwende, klappts auch. Aber geht das
nicht auch eleganter?

In einem Modul schon, in einem Tabellenblatt nicht, da musst Du sauber
referenzieren (weil es eben auch lokale Namen geben kann).

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -
1 „Gefällt mir“

Im Tabellenblatt immer mit Worksheet(…)
Salu Thomas,

Okay, wenn ich jedesmal ThisWorkbook.Worksheets(„Blatt
drei“).Range(„NameXYZ“) verwende, klappts auch. Aber geht das
nicht auch eleganter?

In einem Modul schon, in einem Tabellenblatt nicht, da musst
Du sauber
referenzieren (weil es eben auch lokale Namen geben kann).

Aaaah, okay. Vielen Dank :o)

Bestliche Nacht wünscht
-Rop.