Ich hasse Kettenbriefe. Wenn du sie auch so wie ich hasst, leite diese Nachricht an zehn Freunde weiter.

Wenn man per VBA auf ein Blatt zugreifen möchte, gibt es zwei Varianten. Entweder über den Namen:

Also beispielsweise

ThisWorkbook.Worksheets("Unternehmen")

oder

ActiveWorkbook.Worksheets("Standorte")

Problem: Wird die Arbeitsmappe nicht geschützt, kann der Anwender oder die Anwenderin den Namen ändern!

Die zweite Möglichkeit lautet:

ThisWorkbook.Worksheets(1)
ActiveWorkbook.Worksheets(2)

Problem: der Anwender oder die Anwenderin kann das Blatt verschieben, wenn die Arbeitsmappe nicht geschützt ist. Außerdem ist die Zählung bei ausgeblendeten Blättern schwierig.

Es gibt noch eine dritte Variante. Im VBA-Editor kann man in den Eigenschaften einen Namen festlegen:

Über diesen Namen kann man auf das Blatt zugreifen, beispielsweise:

tbl_Uebungsplanung.Range("F1").Value = _
   tbl_UnternehmenCode.Range("A1").Value ' -- Unternehmen

Erstaunlicherweise versagt:

MsgBox ThisWorkbook.tbl_UnternehmenCode.Range("A1").Value

Auch der Zugriff auf ein Blatt über seinen Codename in einer anderen Datei geht nicht!

    Dim xlDatei As Workbook
    Set xlDatei = Application.Workbooks.Open("D:\Übungspanung.xlsx")
    MsgBox xlDatei.tbl_UnternehmenCode.Range("A1").Value

Schade! Man muss mit einer Schleife über alle Blätter iterieren und abfragen, ob der Codename = „tbl_UnternehmenCode“. Und darauf einen Verweis setzen.