Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1740to1744
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Button mit Action und Parameter

VBA Button mit Action und Parameter
24.02.2020 08:47:13
W
Hallo Forum,
ich nutze auf einer Seite mehrere Buttons, welche per Makrocode generiert werden. Das läuft bisher alles ganz rund. Doch jetzt habe ich ein kleines Problem; mit insgesamt 3 Buttons möchte ich das gleiche Makro aufrufen, jedoch soll bei jedem der 3 Aufrufe ein Parameter an das Makro mitgegeben werden, um Unterschiede im Ablauf zu steuern.
Die Eigenschaften jedes Button werden wie folgt festgelegt:
With FormularControl
.Name = BName
.Characters.Text = BTitel
.Enabled = True
.LockedText = False
.OnAction = BAction
.Placement = xlMoveAndSize 'xlFreeFloating
.PrintObject = False
End With
BName, BTitel und BAction gebe ich als Paramter mit
Was muss ich ändern, um den oben genannten Parameter an den Action-Code zu übergeben?
Gruß W H21

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Button mit Action und Parameter
24.02.2020 09:09:11
Daniel
Hi
bei OnAction gibt es keine Parameterübergabe.
wenn du das gleiche Makro für mehrere Buttons mit leichten Variationen benutzen willst, kannst du mit Application.Caller im Marko den Namen des Aufrufenden Buttons ermitteln und daraus dann die Variation ableiten.
hierzu kannst du dann den benötigten Wert beispielsweise im Button-Namen hinterlegen, oder du kannst über den Namen des Buttons auf seine Objekteigenschaften wie Position oder ähnliches zugreifen und damit weiter arbeiten.
Sub Schaltfl?che1_Klicken()
MsgBox Application.Caller & vbLf & ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address(0, _
0)
End Sub
Gruß Daniel
Anzeige
AW: VBA Button mit Action und Parameter
24.02.2020 09:16:11
W
Hallo Daniel,
Danke für Deine Antwort.
Habe es getestet und für gut befunden; mein Problem ist - dank dem Forum und seiner Freunde - wieder einmal sehr schnell gelöst worden.
Gruß W H21
AW: VBA Button mit Action und Parameter
24.02.2020 09:36:57
W
Hallo Daniel,
jetzt habe ich doch noch ein kleines Problem gefunden.
Der Code läuft einwandfrei, wenn ich das Makro nur über den Button aufrufe. Wenn ich es anders aufrufe, arhalten ich bei der Abfrage nach dem Application.Caller einen Laufzeitfehler 13.
Gibt es dafür eine andere Lösung als "On Error Resume Next"?
Gruß W H21
AW: VBA Button mit Action und Parameter
24.02.2020 09:45:39
Daniel
Hi
wüsste ich jetzt auch nicht.
ich würde aber dann am Anfang den Application.Caller einer Stringvaraible zuweisen:
On Error Resume Next
strAC = Application.Caller
On Error Goto 0
und dann in der folge mit der Variable anstelle von Application.Caller arbeiten.
dann brauchst du das On Error Resume Next nur an diese Stelle und kannst im Rest des Codes wie gewohnt arbeiten.
außerdem kannst du dann mit einer einfachen Abfrage If strAC = "" überprüfen, ob das Makro über einen Button oder über einen anderen Weg aufgerufen wurde, oder du kannst dem strAC einen entsprechenden Wert zuweisen.
Gruß Daniel
Anzeige
AW: VBA Button mit Action und Parameter
24.02.2020 10:32:39
Daniel
HI
noch ne Variante, wie du das lösen kannst:
trenne das Problem auf in 2 Makros.
Makro1 ist das eigentliche Makro welches die Arbeit ausführt. Erstelle dies mit der entsprechenden Parameterübergabe.
das Makro2 verwendest du als OnAction-Makro für die Buttons. Hier ermittelst du ausgehenend von Application.Caller den notwendigen Übergabeparameter und rufst dann damit das Makro1 auf.
wann ist dieser Weg sinnvoll und wann die Methode von Nepumuk?
ich würde diese Methode verwenden, wenn du den Übergabeparameter in irgendeiner Form aus den Buttoneigenschaften oder der Zellposition ableiten kannst (z.B. Übergabeparameter ist der Wert einer Nachbarzelle des Buttons)
die Methode von Nepumuk ist dann sinnvoll, wenn der Übergabeparameter ein beliebiger Wert ist, der nicht "berechnet" oder sonst wie ermittelt werden kann.
Gruß Daniel
Anzeige
AW: VBA Button mit Action und Parameter
24.02.2020 09:16:47
Nepumuk
Hallo,
ein Beispiel:
Option Explicit
Public Sub Beispiel()
With Tabelle1.Shapes("Button 1")
.OnAction = "'Test 1'"
End With
End Sub
Public Sub Test(intNumber As Integer)
MsgBox intNumber
End Sub

Gruß
Nepumuk
AW: VBA Button mit Action und Parameter
24.02.2020 10:05:33
W
Hallo Nepumuk,
Deine Antwort habe ich bisher übersehen.
Natürlich habe ich Deinen Code ebenfalls umgehend probiert. Dabei habe ich aber statt der Ziffern sprechende Namen genommen. Damit hat es leider nicht funktioniert. Nachdem ich die Namen durch Nummern ersetzt hatte. hatte ich den gewünschten Erfolg.
In meinem oben dargestellten Code gebe ich als Parameter für meine Varianle BAction nun "'MyMacro 0'" bzw. "'MyMacro 1'" mit. Dieser Wert wird mir dann im aufgerufenen MyMakro als 1. Parameter angeboten.
Das wars. Danke.
Gruß W H21
Anzeige
AW: VBA Button mit Action und Parameter
24.02.2020 10:11:56
Nepumuk
Hallo,
wenn du Text übergeben willst, dann musst du ihn in Anführungszeichen setzen:
Public Sub Beispiel()
With Tabelle1.Shapes("Button 1")
.OnAction = "'Test ""Text""'"
End With
End Sub
Public Sub Test(strText As String)
MsgBox strText
End Sub
Gruß
Nepumuk
AW: VBA Button mit Action und Parameter
24.02.2020 10:18:03
Daniel
Buttonklick mit Paramteterübergabe, kannte ich auch noch nicht.
wieder was gelernt.

99 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige