Namen von Shapes mit Excel VBA auslesen
Schritt-für-Schritt-Anleitung
Um den Namen einer Shape auszulesen, die durch einen Klick aktiviert wird, kannst du folgendes VBA-Makro verwenden:
-
Öffne Excel und wechsle in die Entwicklertools.
-
Klicke auf "Visual Basic", um den VBA-Editor zu öffnen.
-
Füge ein neues Modul hinzu (Rechtsklick auf „VBAProject“ > Einfügen > Modul).
-
Kopiere und füge den folgenden Code in das Modul ein:
Sub click_Shape()
Dim objShp As Shape
Set objShp = ActiveSheet.Shapes(Application.Caller)
With objShp
'... dein Code
MsgBox objShp.Name ' nur als Test!
End With
Set objShp = Nothing
End Sub
-
Schließe den VBA-Editor und gehe zurück zu deinem Arbeitsblatt.
-
Füge eine Shape (z.B. ein Bild) ein und weise ihr das Makro click_Shape zu (Rechtsklick auf die Shape > Makro zuweisen).
-
Teste das Makro, indem du die Shape anklickst. Es sollte der Name der Shape in einer Meldung angezeigt werden.
Häufige Fehler und Lösungen
-
Fehler: Das Makro wird nicht ausgeführt.
Lösung: Stelle sicher, dass das Makro korrekt zugewiesen ist und dass Makros in deinen Excel-Einstellungen aktiviert sind.
-
Fehler: „Application.Caller“ gibt einen Fehler zurück.
Lösung: Stelle sicher, dass das Makro tatsächlich von einer Shape aufgerufen wird und nicht von einer anderen Quelle.
Alternative Methoden
Eine alternative Methode wäre, den Namen der Shape manuell in einer Zelle zu speichern und diesen Wert dann im Makro zu verwenden. Hier ist ein Beispiel:
Sub getShapeName()
Dim shapeName As String
shapeName = Range("A1").Value ' Name in Zelle A1
MsgBox "Der Name der Shape ist: " & shapeName
End Sub
Hierbei musst du den Namen der Shape in Zelle A1 eingeben und das Makro ausführen, um den Namen anzuzeigen.
Praktische Beispiele
-
Shape Benennen: Du kannst die Shapes auch umbenennen, indem du den Name-Parameter verwendest:
ActiveSheet.Shapes("Bild_1").Name = "Neuer_Name"
-
Alle Shapes auflisten: Um alle Shape-Namen auf dem aktiven Blatt anzuzeigen:
Sub listShapeNames()
Dim shp As Shape
Dim namesList As String
For Each shp In ActiveSheet.Shapes
namesList = namesList & shp.Name & vbCrLf
Next shp
MsgBox namesList
End Sub
Tipps für Profis
- Nutze
vba shape name oder vba shapes name zur Strukturierung und Benennung deiner Shapes, um die Übersichtlichkeit zu erhöhen.
- Verwende
active shape vba oder excel vba active shape, um auf die gerade aktive Shape zuzugreifen, ohne deren Namen zu kennen.
FAQ: Häufige Fragen
1. Kann ich den Namen einer Shape direkt im Arbeitsblatt sehen?
Ja, du kannst die Namen der Shapes über den „Namen“ Feld oben links in Excel einsehen, wenn die Shape ausgewählt ist.
2. Was ist, wenn ich mehrere Shapes gleichzeitig ansprechen möchte?
Du kannst eine Schleife verwenden, um alle Shapes zu durchlaufen und dann die gewünschten Aktionen durchzuführen.
3. Ist das Makro versionsabhängig?
Die grundlegenden VBA-Befehle sind in den meisten Excel-Versionen gleich. Allerdings können einige spezifische Funktionen, wie z.B. das Zuweisen von Makros zu Shapes, je nach Version variieren.