Shape-Objekte in Excel VBA: Namen ermitteln und verwalten
Schritt-für-Schritt-Anleitung
-
Erstellen eines Shapes: Füge ein Textfeld oder ein anderes Shape in dein Excel-Arbeitsblatt ein.
-
Namen vergeben: Du kannst den Namen des Shapes entweder über das Namenfeld in der Excel-Oberfläche oder per VBA ändern. Zum Beispiel:
ActiveSheet.Shapes(1).Name = "Günther"
-
Shape-Namen abfragen: Um den Namen eines Shapes zu ermitteln, kannst du den folgenden Befehl verwenden:
MsgBox ActiveSheet.Shapes(1).Name
-
Zugriff auf den "internen" Namen: Der interne Name kann nicht direkt abgerufen werden, aber du kannst eine Schleife verwenden, um den Namen zu ermitteln:
Function ShapeInternalName(ExternalName As String) As String
Dim IntName As String, ExtName As String
ShapeInternalName = "Keine Textbox mit diesem Namen."
On Error Resume Next
For x = 1 To 100
IntName = "Textbox " & x
ExtName = ActiveSheet.Shapes(IntName).Name
If Err.Number = 0 Then
If ExtName = ExternalName Then ShapeInternalName = IntName
Else
Err.Clear
End If
Next
End Function
Häufige Fehler und Lösungen
-
Fehler: #NAME?
bei Verwendung von Shape-Namen: Dieser Fehler tritt auf, wenn der angegebene Name nicht existiert. Stelle sicher, dass der Name korrekt geschrieben und das Shape tatsächlich vorhanden ist.
-
Fehler beim Abrufen des internen Namens: Es gibt keine direkte Möglichkeit, den internen Namen eines Shapes abzurufen. Verwende stattdessen die oben genannte Schleifenfunktion.
Alternative Methoden
Eine alternative Methode, um ein Shape zu erstellen und einen Namen zu vergeben, ist die Verwendung von AddTextbox
:
Dim shp As Shape
Set shp = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 100, 100, 200, 50)
shp.Name = "MeinTextfeld"
Diese Methode ermöglicht es dir, ein Shape direkt zu erstellen und ihm einen Namen zuzuweisen.
Praktische Beispiele
-
Beispiel 1: Shape erstellen und benennen:
Sub CreateAndNameShape()
Dim shp As Shape
Set shp = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 50, 50, 100, 50)
shp.Name = "Textfeld1"
End Sub
-
Beispiel 2: Namen von Shapes in einer Schleife auflisten:
Sub ListShapeNames()
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
Debug.Print shp.Name
Next shp
End Sub
Tipps für Profis
- Nutze die
ActiveSheet.Shapes
-Sammlung, um effizient auf Shapes zuzugreifen und ihre Eigenschaften zu verwalten.
- Vermeide es, Namen mit Leerzeichen oder Sonderzeichen zu verwenden, um Komplikationen zu vermeiden.
- Dokumentiere deine Shapes und deren Namen, um die Übersichtlichkeit zu erhöhen, besonders bei umfangreichen Excel-Dokumenten.
FAQ: Häufige Fragen
1. Wie kann ich den Namen eines Shapes in Excel VBA ändern?
Du kannst den Namen eines Shapes mit dem Befehl ActiveSheet.Shapes("AltesName").Name = "NeuesName"
ändern.
2. Gibt es eine Möglichkeit, den internen Namen eines Shapes zu ändern?
Nein, der interne Name eines Shapes kann nicht geändert werden. Du kannst jedoch den sichtbaren Namen über VBA oder das Namenfeld anpassen.
3. Warum zeigt der Befehl ActiveSheet.Shapes("Textbox 1").Name
trotzdem den neuen Namen an?
Das liegt daran, dass Shapes in Excel sowohl einen sichtbaren Namen als auch einen internen Namen haben. Der Befehl gibt den sichtbaren Namen zurück, auch wenn du den internen Namen abfragst.