Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Name von Shapes auslesen

Name von Shapes auslesen
Shapes
Hallo Excelianer
Kann ich irgendwie per Makro den Namen der Shape auslesen auf der das Makro liegt?
Sprich ich habe zum Beispiel 2 Bilder wenn ich auf Bild 1 klicke soll mit Bild 1 was passieren. Bei Klick auf Bild 2 soll mit Bild 2 was passieren.
Jetzt muss ich im Makro die Objekte Activesheet.Shapes("Bild_1") und Activesheet.Shapes("Bild_2") ja direkt ansprechen damit mit denen was passiert. die würde ich nun gern per Variable zuweisen lassen ja nach dem auf welches Bild ich klicke.
Gibt es da eine Möglichkeit?
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Name von Shapes auslesen
04.12.2009 12:40:58
Shapes
Sorry, natürlich Vielen Dank schon mal und lieben Gruss
Chris
zu schnell abgeschickt
AW: Name von Shapes auslesen
04.12.2009 12:52:14
Shapes
Hallo Chris,
das geht so.
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

Gruß Sepp

Anzeige
AW: Name von Shapes auslesen
04.12.2009 13:30:43
Shapes
1000 Dank funktioniert prima!
Application.Caller kann ich noch nicht.
Gruss Chris
AW: Name von Shapes auslesen
04.12.2009 13:32:23
Shapes
Application.Caller kannte ich noch nicht. Ist heute nicht mein Tag *ggg*
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

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:

  1. Öffne Excel und wechsle in die Entwicklertools.

  2. Klicke auf "Visual Basic", um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu (Rechtsklick auf „VBAProject“ > Einfügen > Modul).

  4. 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
  5. Schließe den VBA-Editor und gehe zurück zu deinem Arbeitsblatt.

  6. Füge eine Shape (z.B. ein Bild) ein und weise ihr das Makro click_Shape zu (Rechtsklick auf die Shape > Makro zuweisen).

  7. 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

  1. Shape Benennen: Du kannst die Shapes auch umbenennen, indem du den Name-Parameter verwendest:

    ActiveSheet.Shapes("Bild_1").Name = "Neuer_Name"
  2. 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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige