Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1580to1584
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

Bedingte Makro Ausführung in Userform

Bedingte Makro Ausführung in Userform
21.09.2017 09:45:19
Eisenmann
Hallo zusammen, hat jemand eine Idee, wie man in einer UF ein Makro per Befehlsschaltfläche nur dann getriggert werden kann, wenn zum Zeitpunkt des Aufrufs eine bestimmte Textbox geklickt ist? Ist zum Zeitpunkt des Anklickens der Makro Befehlsschaltfläche (in UF) eine andere Textbox ausgewählt, soll der Makro deaktiviert bleiben.
Problem liegt darin, dass beim Klicken auf die Makroschaltfläche bei der zutreffenden Textbox zuvor ein Exit-Ereignis ausgelöst wird und es kann nicht festgestellt werden, ob danach noch nicht eine weitere nicht zutreffende Textbox ausgewählt wurde. Zudem hat die UF auf die 4 MultiPage Seiten c.a. 1600 Textboxen, somit Ausstattung allen Textboxen mit GotFocus/Enter/Exit/LostFocus Ereignissen recht umständlich wäre.
Danke für eure Tipps!

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

Betreff
Datum
Anwender
Anzeige
AW: Bedingte Makro Ausführung in Userform
21.09.2017 10:06:57
ChrisL
Hi
Die Schaltfläche muss die Eigenschaft TakeFocusOnClick = False haben.
Private Sub CommandButton1_Click()
If TextBox1.Name = ActiveControl.Name Then
MsgBox "OK"
Else
MsgBox "NOK"
End If
End Sub

Ein Userform mit 1600 TextBoxen ist natürlich der Wahnsinn und ich würde das Vorhaben noch einmal überdenken.
cu
Chris
AW: Bedingte Makro Ausführung in Userform
21.09.2017 14:48:03
Eisenmann
Hi ChrisL, mit TakeFocusOnClick = False funktioniert bestens! Vielen Dank!!!
AW: Bedingte Makro Ausführung in Userform
21.09.2017 10:40:33
Daniel
Hi
bei so vielen TextBoxen wäre zu überlegen, ob du für die Eingabe nicht besser entsprechend formatierte Tabellenblätter verwendest und nur die Buttons in die Userform packst.(diese dann natürlich als nicht modale userform)
dann könntest du einfach die ActiveCell abfragen, und die ändert sich nicht, wenn du in der Userform rumklickst.
Bleibst du bei der Userform mit vielen Textboxen, wäre die sauberste Lösung natürlich, wenn in einem Eventmakro der TextBoxen (ob Change, Enter, Exit ist egal) der Textboxname in eine modulweit gültige Variable geschrieben wird.
in dieser Variable würde dann immer der Name der zuletzt bearbeiteten TextBox stehen und diesen könntest du dann im Click-Event des Buttons abfragen.
Der Button bleibt dann zwar immer enabled, aber du kannst die Ausführung des Makros abbrechen, wenn nicht die richtige TextBox ausgewählt ist.
IF strNameTextbox  "TextboxXYZ" then Exit Sub

Hierzu wäre aber bei dieser Anzahl an TextBoxen die Klassenprogrammierung unumgänglich.
ohne Klassenprogrammierung gäbe es folgenden Workaround:
schreibe im MouseMove-Event den Namen des ActiveControl in eine Modulweit gültige Variable und frage diese dann im Click-Event des Buttons ab.
im MouseMove des Commandbuttons liegt der Focus immer noch auf dem alten, zuletzt bearbeiteten Steuerelement.
Auch hier gilt wieder das Prinzip, dass der Commandbutton immer enabeld ist, der Markolauf aber vorzeitig beendet wird, falls nicht die richtige TextBox aktiv zuletzt aktiv war.
diese Methode setzt aber voraus, dass der Anwender mit der Maus arbeitet und nicht mit der Tab-Taste die Steuerelemente wechselt.
Bei 400 TextBoxen auf einer Seite ist das aber eher unwahrscheinlich.
Gruß Daniel
Anzeige
AW: Bedingte Makro Ausführung in Userform
21.09.2017 14:54:10
Eisenmann
Hi Daniel, die Lösung von ChrisL funktioniert bei mir bestens, aber vielen Dank für Dein Input - der Workaround mit MouseMove-Event könnte evtl. auch eine Lösung sein. Danke für das Feedback!
AW: Bedingte Makro Ausführung in Userform
21.09.2017 17:52:42
Daniel
Hi
das TakeFocusOnClick = False hatte ich bisher noch nicht auf dem Schirm.
wenns damit funktioniert, dann ist das natürlich die bessere Methode als mein etwas umständlicher und nur teilfunktionaler Workaround.
aber beim Programmieren ist das wie mit dem Sprechen einer Sprache, man muss nicht unbedingt immer genau das bestpassende Wort kennen, aber man sollte in der Lage sein, mit den Wörtern die man kennt das auszudrücken, was man sagen will.
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige