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

Forumthread: MsgBox bei Klick auf Shape

MsgBox bei Klick auf Shape
11.02.2008 14:13:00
R.
Mahlzeit ihr Lieben,
ich habe gerade eine Landkarte mit allen Landkreisen der BRD erhalten, für
die ich nun folgendes auf die Schnelle "zusammenzimmern" soll. Nach Klick
auf einen Landkreis (jeder wird durch ein Shape dargestellt) soll dessen
Kreisnummer (so heißt dann das Shape) ausgelesen werden und mittels
Sverweis die Verkaufsdaten aus einer Tabelle geholt werden, um diese
dann mittels einer MsgBox anzuzeigen.
Ich hatte es erst mit SelectionChange probiert, was aber wegen den Shapes schon mal
nicht geht. Dann hatte ich allen Shapes über ein Makro für "OnAction" das Makro mit der
MsgBox zugewiesen. KLappt aber auch nicht, weil mir der letzte Schritt fehlt :
Nämlich herauszufinden, welches meiner über 400 Shapes auf der Karte ich den nun
gerade angeklickt habe. Mit Selection ist bei OnAction und einem Shape ja nun gar nichts
zu holen.
Hatte denn jemand ein ähnliches Problem und hilft mir netterweise auf die Sprünge ?
Aufgabenstellung :
Bei Klick auf ein Shape, soll dessen Name ausgelesen und an eine Zelle
übergeben werden, bis das nächste Shape angeklickt wird.......
Herzlichen Dank
R.Schmitt

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: MsgBox bei Klick auf Shape
11.02.2008 14:29:00
Josef
Hallo R.,
vom Prinzip her geht das so.
Sub ShapeOn_Click()
Dim strName As String

strName = ActiveSheet.Shapes(Application.Caller).Name
Range("A1") = strName

End Sub


Gruß Sepp



Anzeige
AW: MsgBox bei Klick auf Shape
11.02.2008 14:39:00
R.
Tausend Dank lieber Josef.
Hab´s gerade verbastelt.
Jetzt kann ich die Datei an die
Kollegen weitergeben.
Schönen Tag noch
R.Schmitt
;
Anzeige
Anzeige

Infobox / Tutorial

MsgBox bei Klick auf Shape in Excel nutzen


Schritt-für-Schritt-Anleitung

  1. Shape erstellen: Stelle sicher, dass Du Shapes in Deinem Excel-Dokument hast. Diese können durch das Einfügen von Formen (z.B. Rechtecken, Kreisen) erstellt werden.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Modul hinzufügen: Gehe zu Einfügen > Modul, um ein neues Modul zu erstellen.

  4. Makro schreiben: Füge folgenden Code in das Modul ein:

    Sub ShapeOn_Click()
        Dim strName As String
        strName = ActiveSheet.Shapes(Application.Caller).Name
        MsgBox "Du hast das Shape mit dem Namen: " & strName & " angeklickt."
    End Sub
  5. Shape mit Makro verknüpfen: Klicke mit der rechten Maustaste auf das gewünschte Shape, wähle Makro zuweisen und wähle ShapeOn_Click.

  6. Testen: Klicke auf das Shape, um die MsgBox mit dem Namen des Shapes anzuzeigen.


Häufige Fehler und Lösungen

  • Fehler: MsgBox wird nicht angezeigt
    Lösung: Stelle sicher, dass das Makro korrekt zugewiesen ist. Überprüfe auch die Sicherheitseinstellungen für Makros in Excel.

  • Fehler: Shape-Name wird nicht ausgelesen
    Lösung: Vergewissere Dich, dass Du das richtige Shape angeklickt hast und dass der Code im richtigen Modul steht.


Alternative Methoden

Eine weitere Möglichkeit, um mit Shapes und MsgBoxen zu arbeiten, ist die Verwendung der Worksheet.ShapeSelectionChanged-Ereignisprozedur. Dies ermöglicht es Dir, auf die Auswahl von Shapes zu reagieren, anstatt nur auf einen Klick.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Me.Shapes) Is Nothing Then
        MsgBox "Du hast ein Shape ausgewählt!"
    End If
End Sub

Praktische Beispiele

Angenommen, Du hast eine Karte mit Landkreisen als Shapes, kannst Du die Verkaufsdaten für jeden Landkreis aus einer Tabelle abfragen, indem Du den Shape-Namen als Schlüssel für den SVERWEIS verwendest.

  1. Shapes benennen: Benenne jedes Shape entsprechend seiner Kreisnummer.
  2. Daten-Tabelle erstellen: Erstelle eine Tabelle mit Kreisnummern und den entsprechenden Verkaufsdaten.
  3. Code anpassen:

    Sub ShapeOn_Click()
        Dim strName As String
        Dim Verkaufsdaten As Variant
        strName = ActiveSheet.Shapes(Application.Caller).Name
        Verkaufsdaten = Application.WorksheetFunction.VLookup(strName, Sheets("Daten").Range("A:B"), 2, False)
        MsgBox "Verkaufsdaten für " & strName & ": " & Verkaufsdaten
    End Sub

Tipps für Profis

  • Benutzerdefinierte MsgBox: Du kannst die MsgBox anpassen, um Schaltflächen hinzuzufügen, die auf unterschiedliche Aktionen reagieren.
  • Fehlerbehandlung: Implementiere Error-Handling in Deinem VBA-Code, um unerwartete Fehler abzufangen.
  • Verwendung von Arrays: Wenn Du viele Shapes hast, könnte es nützlich sein, die Shape-Namen in ein Array zu speichern und effizient durch dieses zu iterieren.

FAQ: Häufige Fragen

1. Wie kann ich die MsgBox anpassen?
Du kannst die MsgBox anpassen, indem Du verschiedene Optionen wie Schaltflächen oder Icons hinzufügst. Beispielsweise:

MsgBox "Nachricht", vbYesNo + vbQuestion, "Titel"

2. Funktioniert das nur in bestimmten Excel-Versionen?
Die beschriebenen Methoden funktionieren in Excel 2007 und neueren Versionen. Stelle sicher, dass Makros in Deinem Excel aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige