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

Forumthread: Control über "OnAction" an Makro übergeben

Control über "OnAction" an Makro übergeben
Martin
Hallo,
ich versuche gerade mir ein eigenes UserForm-Kontextmenü für alle TextBoxen zu bauen. Das Kontextmenü funktioniert auch schon, aber leider gelingt es mir nicht die TextBox als Control über "OnAction" an ein Makro zu übergeben.
Bei folgendem Code komme ich nicht weiter:

With .Controls.Add(Type:=msoControlButton)
.Caption = "Alles markieren"
'Die folgende Zeile bereitet mir Probleme
.OnAction = "'AllesMarkieren(" & Box & ")'"
.BeginGroup = True
If Len(Box.Value) = 0 Then .Enabled = False
End With

"Box" ist die jeweilige TextBox im Klassenmodul. Ich habe die Datei auch vollständig hochgeladen:
https://www.herber.de/bbs/user/77954.xls
Viele Grüße
Martin
Anzeige
AW: Control über "OnAction" an Makro übergeben
13.12.2011 11:46:25
Beverly
Hi Martin,
vielleicht wäre das eine Möglichkeit:
            .OnAction = "AllesMarkieren" & Box.Name

und dann für jede TextBox ein eigenes Makro also
Sub AllesMarkierenTextBox1()
End Sub
Sub AllesMarkierenTextBox2()
End Sub
Sub AllesMarkierenTextBox3()
End Sub



Anzeige
Das ist leider keine dynamische Lösung...
13.12.2011 11:59:27
Martin
Hallo Karin,
vielen Dank für deine Antwort. Klar wäre dein Vorschlag eine Möglichkeit, aber damit wären für jede einzelne TextBox neue 4 Makros notwendig (...bei 20 TextBoxen also 80 Makros). Ich lasse die Frage mal offen, vielleicht findet jemand eine dynamische Lösung.
Viele Grüße
Martin
Anzeige
AW: Control über "OnAction" an Makro übergeben
13.12.2011 12:40:59
Eugen
Hallo Martin
Dein Menü muss so aussehen
With .Controls.Add(Type:=msoControlButton)
.Caption = "Alles markieren"
'--------------------------------------------------------
'Die folgende Zeile bereitet mir Probleme
'--------------------------------------------------------
.OnAction = "AllesMarkieren"
.Parameter = box.Name
.BeginGroup = True
If Len(box.Value) = 0 Then .Enabled = False
End With
und die entsprechende Callback Funktion so
Sub AllesMarkieren()
'UserForm1.Label1 = "Alles markieren"
MsgBox CommandBars("EditMenue").Controls(4).Parameter
End Sub
Mfg
Eugen
Anzeige
Vielen Dank! Zu Parameter habe ich noch eine Frage
13.12.2011 13:13:56
Martin
Hallo Eugen,
super, vielen Dank für deine Hilfe. "Parameter" war mir bislang unbekannt (...und eigentlich hätte ich auch auf die Idee mit "Tag" kommen können). Aber was ist der Unterschied zwischen Parameter und Tag? Wann sollte was eingesetzt werden?
Viele Grüße
Martin
AW: Control über "OnAction" an Makro übergeben
13.12.2011 13:18:31
Martin
Hallo Luschi,
vielen Dank für den Hinweis. Aber jetzt will ich wissen, ob ich es auch selbst lösen kann.
Wenn ich scheitere, dann greife ich auf die "zu Guttenberg"-Methode (Copy & Paste) zurück :-)
Viele Grüße
Martin
AW: Control über "OnAction" an Makro übergeben
13.12.2011 14:38:39
Martin
Hallo,
das Kontextmenü funktioniert jetzt. Ich habe aus Zeitgründen die Befehle (Kopieren, Ausschneiden, Einfügen, Alles Markieren) über SendKeys realisiert. Ist zwar nicht die sauberste Lösung, aber es funktioniert fehlerfrei: https://www.herber.de/bbs/user/77963.xls
Viele Grüße
Martin
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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