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

Application.Caller.Value

Forumthread: Application.Caller.Value

Application.Caller.Value
02.10.2018 10:06:36
Mike
Hallo zusammen,
ich nutze folgenden Code um je nach gedrückter Schaltfläche(Formularsteuerelement)
den Namen der Schaltfläche als String zu übergeben.

Public Sub Commandbutton_Click()
Dim Linie As String
Pxx = Application.Caller.Value
MsgBox "Pxx"
End Sub

Das Problem dabei ist nur, dass hier der von Excel vergeben Text der Schaltfläche genutzt wird. Gibt es eine Möglichkeit statt den Schaltflächennamen den Text der Schaltfläche zu übergeben? Also statt z.B. "Schaltfläche 35" den von mir editierten Text der Schaltfläche "Linie 1" ?
Gruß
Mike
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Application.Caller.Value
02.10.2018 10:14:35
daniel
Hi
den angezeigten Text des Buttons bekommst du mit
ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text

btw Application.Caller ist kein Objekt sondern ein einfacher Textstring mit dem Namen des angeklickten objekts
Gruß Daniel
Anzeige
AW: Application.Caller.Value
02.10.2018 18:28:57
onur
Du solltest keine Formularsteuerelemente benutzen, sie sind eigentlich Dinosaurier aus den frühen Excel-Zeiten und nur noch aus Kompatibilitätsgründen verfügbar.
Wenn Du statt dessen Active-X-Steuerelemente nimmst, kannst du viel mehr damit machen und besser damit arbeiten.
Für ein Active-X-Button wäre der Code so:
Private Sub CommandButton1_Click()
MsgBox CommandButton1.Caption
End Sub

Anzeige
AW: Application.Caller.Value
02.10.2018 19:20:53
Daniel
naja, kommt immer darauf an, was du vorhast.
solange es nur darum geht, bei Klick ein Makro auszuführen, sind die Formularsteuerelemente wesentlich einfacher zu handhaben, insbesondere dann, wenn man viele Buttons mit gleichem oder ähnlichen Code braucht.
Bei den Forumlarsteuerelementen kann man auf einfachste Weise das selbe Makro für mehrere Buttons verwenden, dh zur Laufzeit erstellte Buttons sind völlig problemlos zu handhaben, ohne dass man dafür Klassenprogrammierung erlernen muss.
Auch die Grafischen Möglichkeiten sind viel größer, wenn man mit einbezieht, das im Prinzip jedes Grafikelement als Commandbutton verwendet werden kann.
Auch hast du bei Formularsteuerelementen nicht das Problem, dass diese sich selbstständig verschieben oder die Größe ändern, wo wie es die ActiveX-Elemente gerne mal tun.
Gruß Daniel
Anzeige
Sehr richtig, ...
02.10.2018 21:38:23
Luc:-?
Daniel,
und außerdem kann man sie bei Wunsch auch noch animieren (ähnlich wie in ppt, nur muss man das dann selber pgmmieren), also ein- und ausblenden, auf- und einrollen usw.
Tja, Onur,
die Dinosaurier sind ja nicht wirklich alle ausgestorben. Ihre Nachkommen stellen auch heute noch die größte (artenreichste) Wir­bel­tiergruppe… ;-]
Gruß, Luc :-?
Anzeige
;
Anzeige

Infobox / Tutorial

Anwendung von Application.Caller in Excel VBA


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.
  2. Modul erstellen: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ > Einfügen > Modul.
  3. Code einfügen: Füge den folgenden Code in das Modul ein:
    Public Sub Commandbutton_Click()
       Dim Linie As String
       Linie = ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text
       MsgBox Linie
    End Sub
  4. Schaltfläche erstellen: Füge eine Schaltfläche in dein Excel-Blatt ein und verlinke sie mit dem Makro Commandbutton_Click.
  5. Testen: Klicke auf die Schaltfläche und überprüfe, ob der Text der Schaltfläche in einer Meldung angezeigt wird.

Häufige Fehler und Lösungen

  • Fehler: Application.Caller error 2023

    • Lösung: Stelle sicher, dass die Schaltfläche korrekt benannt ist und sich auf dem aktiven Arbeitsblatt befindet. Der Fehler kann auftreten, wenn die Schaltfläche nicht im aktuellen Sichtbereich ist.
  • Fehler: Falscher Text angezeigt

    • Lösung: Vergewissere dich, dass du den Text mit ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text korrekt abfragst. Wenn du stattdessen den Namen der Schaltfläche erhältst, überprüfe die Verlinkung und die Art des Steuerelements.

Alternative Methoden

Statt Formularsteuerelemente kannst du auch Active-X-Steuerelemente verwenden. Hier ein Beispielcode für einen Active-X-Button:

Private Sub CommandButton1_Click()
    MsgBox CommandButton1.Caption
End Sub

Active-X-Steuerelemente bieten mehr Flexibilität und sind einfacher zu handhaben, wenn du viele Buttons mit ähnlichem Code benötigst.


Praktische Beispiele

  1. Schaltfläche mit spezifischem Text:

    • Wenn du eine Schaltfläche mit dem Text "Linie 1" hast und diesen Text abrufen möchtest, verwende den oben genannten Code.
  2. Anpassung des Codes für weitere Schaltflächen:

    • Du kannst denselben Code für mehrere Schaltflächen verwenden, indem du die Application.Caller-Methode nutzt, um den Text dynamisch abzurufen.

Tipps für Profis

  • Verwende Application.Caller strategisch: Mit Application.Caller kannst du den Namen des gerade angeklickten Objekts abrufen. Dies ist besonders nützlich, wenn du mehrere Schaltflächen mit demselben Makro verwendest.
  • Fehlerbehandlung einbauen: Implementiere Fehlerbehandlungsroutinen in deinem Code, um Probleme beim Abrufen von Werten zu vermeiden, z.B.:
    On Error Resume Next
    Linie = ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text
    If Err.Number <> 0 Then
      MsgBox "Ein Fehler ist aufgetreten"
    End If

FAQ: Häufige Fragen

1. Was ist Application.Caller?
Application.Caller ist eine Methode in Excel VBA, die den Namen des Objekts zurückgibt, das ein Makro aufgerufen hat, z.B. eine Schaltfläche.

2. Wie kann ich den Text einer Schaltfläche abrufen?
Verwende den Code ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text, um den Text der Schaltfläche abzurufen.

3. Kann ich Application.Caller auch für andere Steuerelemente verwenden?
Ja, Application.Caller kann für verschiedene Steuerelemente verwendet werden, solange sie auf dem aktiven Arbeitsblatt vorhanden sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige