Tabellenblatt über Codename in Excel VBA ansprechen
Schritt-für-Schritt-Anleitung
Um ein Tabellenblatt in Excel VBA über seinen Codename anzusprechen, kannst du die folgenden Schritte befolgen:
-
Öffne das VBA-Editor: Drücke ALT + F11
, um den VBA-Editor zu öffnen.
-
Erstelle ein neues Modul: Klicke im Projekt-Explorer mit der rechten Maustaste auf VBAProject (deine Arbeitsmappe)
und wähle Einfügen > Modul
.
-
Definiere eine Subroutine: Schreibe eine Subroutine, in der du das Tabellenblatt über den Codename ansprechen möchtest.
Beispiel:
Sub Beispiel()
Dim ws As Worksheet
Set ws = ThisWorkbook.tbl_Lookup_Projektliste
' Weitere Aktionen mit ws
End Sub
-
Fehlerbehebung: Wenn du einen Laufzeitfehler erhältst, stelle sicher, dass der Codename korrekt ist und die Arbeitsmappe geöffnet ist.
Häufige Fehler und Lösungen
-
Laufzeitfehler 438: Dieser Fehler tritt auf, wenn du versuchst, ein Tabellenblatt über den Codename in einer anderen Arbeitsmappe anzusprechen. Um das zu umgehen, musst du eine Schleife verwenden, um die Arbeitsblätter zu durchsuchen.
-
Codename nicht gefunden: Stelle sicher, dass der Codename des Arbeitsblattes korrekt ist. Du kannst den Codename im VBA-Editor im Eigenschaftenfenster auf der linken Seite überprüfen.
Alternative Methoden
Wenn du den Codename nicht direkt verwenden kannst, kannst du auch eine Funktion erstellen, die das Tabellenblatt basierend auf dem Codename zurückgibt. Hier ist ein Beispiel:
Function GetSheetByCodename(ByVal pvstrCodeName As String, Optional ByRef oprWorkbook As Workbook = Nothing) As Worksheet
Dim objSheet As Worksheet
If oprWorkbook Is Nothing Then Set oprWorkbook = ThisWorkbook
For Each objSheet In oprWorkbook.Sheets
If objSheet.CodeName = pvstrCodeName Then
Set GetSheetByCodename = objSheet
Exit Function
End If
Next
Set GetSheetByCodename = Nothing
End Function
Verwende diese Funktion, um das gewünschte Tabellenblatt zu erhalten.
Praktische Beispiele
Hier sind einige praktische Beispiele, wie du ein Tabellenblatt mit einem Codename ansprechen kannst:
-
Einfaches Ansprechen:
Sub Ansprechen()
Dim ws As Worksheet
Set ws = ThisWorkbook.tbl_Lookup_Projektliste
MsgBox ws.Range("A1").Value
End Sub
-
Mit Schleife:
Sub AnsprechenMitSchleife()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.CodeName = "tbl_Lookup_Projektliste" Then
MsgBox ws.Range("A1").Value
Exit For
End If
Next ws
End Sub
Tipps für Profis
- Vermeide Namenskonflikte: Stelle sicher, dass die Codenamen deiner Arbeitsblätter eindeutig sind, um Verwirrungen zu vermeiden.
- Dokumentiere deinen Code: Verwende Kommentare, um den Code verständlicher zu machen, besonders wenn du mit Codenamen arbeitest.
- Nutze Option Explicit: Füge
Option Explicit
am Anfang deiner Module hinzu, um sicherzustellen, dass alle Variablen deklariert werden.
FAQ: Häufige Fragen
1. Warum kann ich ein Tabellenblatt nicht direkt über den Codename ansprechen?
Das direkte Ansprechen von Worksheets in anderen Workbooks über Codenamen ist nicht möglich. Du musst dies über eine Schleife tun.
2. Wie finde ich den Codename eines Tabellenblattes?
Du kannst den Codename eines Arbeitsblattes im VBA-Editor im Eigenschaftenfenster sehen. Klicke auf das Blatt und schaue dir die Eigenschaften an.
3. Was ist der Unterschied zwischen Codename und Anzeigename?
Der Codename ist der Name, der im VBA-Code verwendet wird, während der Anzeigename der Name ist, der in Excel sichtbar ist. Der Codename bleibt konstant, selbst wenn der Anzeigename geändert wird.