Discussion:
Welche Textbox hat focus ?
(zu alt für eine Antwort)
Frederik
2007-02-08 10:52:10 UTC
Permalink
Textboxen in Userform

Hallo an alle,
ich habe eine Userform mit gesamt 20 Textboxen. Zu einigen Boxen
sollen dem User Hilfstexte angezeigt werden. Die einzelnen Boxen
können sowohl mit Mouse wie auch mit Tab angewählt werden.
Frage:
Wie kann festgestellt werden, welche Textbox den Focus hat?
Gibt die Box, welche den Focus hat, einen verarbeitbaren Rückgabewert?
Bspl. If Textbox1.focused = true then label1. caption ist "bla bla"

Wäre schön wenn Ihr mir helfen könntet.
Gruß an Euch alle
Frederik
Andreas Schmidt
2007-02-08 11:20:09 UTC
Permalink
Hallo Frederik,
Post by Frederik
Textboxen in Userform
Hallo an alle,
ich habe eine Userform mit gesamt 20 Textboxen. Zu einigen Boxen
sollen dem User Hilfstexte angezeigt werden.
ich nehme mal an, Tooltips sind nicht zu gebrauchen und Du hast keine
Möglichkeit, Windows-Hilfedateien zu erzeugen.?
Post by Frederik
Die einzelnen Boxen
können sowohl mit Mouse wie auch mit Tab angewählt werden.
Wie kann festgestellt werden, welche Textbox den Focus hat?
Gibt die Box, welche den Focus hat, einen verarbeitbaren Rückgabewert?
Bspl. If Textbox1.focused = true then label1. caption ist "bla bla"
z.B. schreib im Enter-Ereignis jeder Textbox deren Name in eine globale
Variable.

Gruß
Andreas
Melanie Breden
2007-02-08 11:21:06 UTC
Permalink
Hallo Frederik,
Post by Frederik
ich habe eine Userform mit gesamt 20 Textboxen. Zu einigen Boxen
sollen dem User Hilfstexte angezeigt werden. Die einzelnen Boxen
können sowohl mit Mouse wie auch mit Tab angewählt werden.
Wie kann festgestellt werden, welche Textbox den Focus hat?
Gibt die Box, welche den Focus hat, einen verarbeitbaren Rückgabewert?
Bspl. If Textbox1.focused = true then label1. caption ist "bla bla"
schau dir mal die 'ActiveControl'-Eigenschaft an.

Private Sub CommandButton1_Click()
If MeActiveControl.Name = "TextBox1" Then Label1.Caption = "BlaBla"
End Sub

Wenn du einen CommandButton zur Überprüfung verwendest, muss die
TakeFocusOnClick-Eigenschaft im Eigenschaftenfenster auf False gesetzt
werden. Es reicht nicht aus, diese Eigenschaft zur Laufzeit einzustellen.


Mit freundlichen Grüssen
Melanie Breden
--
- Microsoft MVP für Excel -
www.melanie-breden.de
Frederik
2007-02-08 12:25:19 UTC
Permalink
Post by Andreas Schmidt
Hallo Frederik,
Post by Frederik
ich habe eine Userform mit gesamt 20 Textboxen. Zu einigen Boxen
sollen dem User Hilfstexte angezeigt werden. Die einzelnen Boxen
können sowohl mit Mouse wie auch mit Tab angewählt werden.
Wie kann festgestellt werden, welche Textbox den Focus hat?
Gibt die Box, welche den Focus hat, einen verarbeitbaren Rückgabewert?
Bspl. If Textbox1.focused = true then label1. caption ist "bla bla"
schau dir mal die 'ActiveControl'-Eigenschaft an.
Private Sub CommandButton1_Click()
If MeActiveControl.Name = "TextBox1" Then Label1.Caption = "BlaBla"
End Sub
Wenn du einen CommandButton zur Überprüfung verwendest, muss die
TakeFocusOnClick-Eigenschaft im Eigenschaftenfenster auf False gesetzt
werden. Es reicht nicht aus, diese Eigenschaft zur Laufzeit einzustellen.
Mit freundlichen Grüssen
Melanie Breden
--
- Microsoft MVP für Excel -www.melanie-breden.de
Hallo Melanie
Vorab vielen Dank für Deinen Vorschlag aber ,,Uff", Du hast am anderen
Ende keinen Profi sondern einen noch dummen Anfänger, welcher just
versucht das Laufen zu erlernen.
Will Dir mein Vorhaben näher erklären und würde mich freuen wenn Du
mir einen Lösungsvorschlag geben könntest.
1. in der Userform habe ich keinen Buttom sondern eine Listbox mit 2
Auswahlmöglichkeiten
2. Nach erfolgter Anwahl möchte ich einen Dialog mit dem User
aufbauen, wobei bei Wahl 1 (Listindex) der Focus auf textbox1 (tbaa1)
gesetzt wird. Bei Wahl 2 soll Textbox 10 (tbaa10) den Focus erhalten.
3. Mit Auswahl der Textbox soll jetzt sofort ein Dialog zum User,
mittel Listboxen aufgenommen werden, aus denen wiederum die
entsprechend Textbox gefüllt wird. Der User kann lediglich eine
vorgegebene Auswahl treffen deren Plausibilität nach der letzten
Textbox im gesamten geprüft wird.

Frage!
Wie kann ich Deinen Vorschlag einbinden. Wenn Du mir einen kurzen Code
dazu geben könntest wäre das sehr lieb von Dir.
Gruß
Frederik
Melanie Breden
2007-02-08 13:00:46 UTC
Permalink
Hallo Frederik,
Post by Frederik
Vorab vielen Dank für Deinen Vorschlag aber ,,Uff", Du hast am anderen
Ende keinen Profi sondern einen noch dummen Anfänger, welcher just
versucht das Laufen zu erlernen.
Anfänger zu sein ist doch kein Problem, aber bist du deswegen dumm ;-)
Post by Frederik
Will Dir mein Vorhaben näher erklären und würde mich freuen wenn Du
mir einen Lösungsvorschlag geben könntest.
1. in der Userform habe ich keinen Buttom sondern eine Listbox mit 2
Auswahlmöglichkeiten
2. Nach erfolgter Anwahl möchte ich einen Dialog mit dem User
aufbauen, wobei bei Wahl 1 (Listindex) der Focus auf textbox1 (tbaa1)
gesetzt wird. Bei Wahl 2 soll Textbox 10 (tbaa10) den Focus erhalten.
das hast du schon realisiert?
Post by Frederik
3. Mit Auswahl der Textbox soll jetzt sofort ein Dialog zum User,
mittel Listboxen aufgenommen werden, aus denen wiederum die
entsprechend Textbox gefüllt wird. Der User kann lediglich eine
vorgegebene Auswahl treffen deren Plausibilität nach der letzten
Textbox im gesamten geprüft wird.
ok, wenn ich das richtig verstanden habe, willst du zu einigen TextBoxen
in ein und demselben Label Hilfetexte anzeigen?
Ich dachte, die sollen nur nach dem Hilfeschrei des Users angezeigt werden.

Dazu würde ich nicht, die aktivierte TextBox abfragen, sondern in jeder
TextBox, die einen Hilfetext zur Verfügung hat das Label anpassen.

Speicher die Hilfetexte in einem Standardmodul nach folgendem Schema:

Public Const cstrHilfeTextBox1 As String = _
"Hier kommt jetzt der" & _
vbNewLine & _
"Hilfetext für TextBox1"

Public Const cstrHilfeTextBox2 As String = _
"Hier kommt jetzt der" & _
vbNewLine & _
"Hilfetext für TextBox2"

Ebenfalls in das Standardmodul gehört die ausführende Prozedur.
Ich lagere die Sub deshalb aus, falls noch weitere Befehle dazu kommen,
oder sich irgendwas ändert. Dann muss nur diese eine Prozedur geändert werden
und nicht alle Codes der TextBoxen.

Public Sub WriteHelpText(strText As String)
UserForm1.Label1.Caption = strText
End Sub

Füge für jede TextBox mit Hilfetext folgende Ereignis Prozeduren im
Codemodul der UserForm ein. Passe die richtigen Konstanten mit
dem Hilfetext an deine Konstanten an:

Private Sub TextBox1_Enter()
WriteHelpText cstrHilfeTextBox1
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
WriteHelpText ""
End Sub

Private Sub TextBox2_Enter()
WriteHelpText cstrHilfeTextBox2
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
WriteHelpText ""
End Sub

Sobald eine TextBox den Focus erhält, wird der Text in Label 1 angezeigt.
Beim Verlassen der TextBox wird dieser Text wieder gelöscht, falls als
nächstes eine TextBox ohne Hilfetext aktiviert wird.


Mit freundlichen Grüssen
Melanie Breden
--
- Microsoft MVP für Excel -
www.melanie-breden.de
Frederik
2007-02-08 13:52:25 UTC
Permalink
Post by Andreas Schmidt
Hallo Frederik,
Post by Frederik
Vorab vielen Dank für Deinen Vorschlag aber ,,Uff", Du hast am anderen
Ende keinen Profi sondern einen noch dummen Anfänger, welcher just
versucht das Laufen zu erlernen.
Anfänger zu sein ist doch kein Problem, aber bist du deswegen dumm ;-)
Post by Frederik
Will Dir mein Vorhaben näher erklären und würde mich freuen wenn Du
mir einen Lösungsvorschlag geben könntest.
1. in der Userform habe ich keinen Buttom sondern eine Listbox mit 2
Auswahlmöglichkeiten
2. Nach erfolgter Anwahl möchte ich einen Dialog mit dem User
aufbauen, wobei bei Wahl 1 (Listindex) der Focus auf textbox1 (tbaa1)
gesetzt wird. Bei Wahl 2 soll Textbox 10 (tbaa10) den Focus erhalten.
das hast du schon realisiert?
Post by Frederik
3. Mit Auswahl der Textbox soll jetzt sofort ein Dialog zum User,
mittel Listboxen aufgenommen werden, aus denen wiederum die
entsprechend Textbox gefüllt wird. Der User kann lediglich eine
vorgegebene Auswahl treffen deren Plausibilität nach der letzten
Textbox im gesamten geprüft wird.
ok, wenn ich das richtig verstanden habe, willst du zu einigen TextBoxen
in ein und demselben Label Hilfetexte anzeigen?
Ich dachte, die sollen nur nach dem Hilfeschrei des Users angezeigt werden.
Dazu würde ich nicht, die aktivierte TextBox abfragen, sondern in jeder
TextBox, die einen Hilfetext zur Verfügung hat das Label anpassen.
Public Const cstrHilfeTextBox1 As String = _
"Hier kommt jetzt der" & _
vbNewLine & _
"Hilfetext für TextBox1"
Public Const cstrHilfeTextBox2 As String = _
"Hier kommt jetzt der" & _
vbNewLine & _
"Hilfetext für TextBox2"
Ebenfalls in das Standardmodul gehört die ausführende Prozedur.
Ich lagere die Sub deshalb aus, falls noch weitere Befehle dazu kommen,
oder sich irgendwas ändert. Dann muss nur diese eine Prozedur geändert werden
und nicht alle Codes der TextBoxen.
Public Sub WriteHelpText(strText As String)
UserForm1.Label1.Caption = strText
End Sub
Füge für jede TextBox mit Hilfetext folgende Ereignis Prozeduren im
Codemodul der UserForm ein. Passe die richtigen Konstanten mit
Private Sub TextBox1_Enter()
WriteHelpText cstrHilfeTextBox1
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
WriteHelpText ""
End Sub
Private Sub TextBox2_Enter()
WriteHelpText cstrHilfeTextBox2
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
WriteHelpText ""
End Sub
Sobald eine TextBox den Focus erhält, wird der Text in Label 1 angezeigt.
Beim Verlassen der TextBox wird dieser Text wieder gelöscht, falls als
nächstes eine TextBox ohne Hilfetext aktiviert wird.
Mit freundlichen Grüssen
Melanie Breden
--
- Microsoft MVP für Excel -www.melanie-breden.de
Hallo Melanie
Danke für Deinen Vorschlag. Du hattest mich richtig verstanden. Die
Dialogführung habe ich bereits fertig wusste jedoch nicht, wie ich das
Label mit dem Hilfstext der richtigen Textbox sicher zuordnen kann.
Werde Deinen Vorschlag einbauen und Dir hoffentlich bald eine kurze
Erfolgsmitteilung geben können. Bis dahin erstmal vielen Dank
Gruß
Frederik
Frederik
2007-02-08 18:28:27 UTC
Permalink
Post by Andreas Schmidt
Hallo Frederik,
Post by Frederik
Vorab vielen Dank für Deinen Vorschlag aber ,,Uff", Du hast am anderen
Ende keinen Profi sondern einen noch dummen Anfänger, welcher just
versucht das Laufen zu erlernen.
Anfänger zu sein ist doch kein Problem, aber bist du deswegen dumm ;-)
Post by Frederik
Will Dir mein Vorhaben näher erklären und würde mich freuen wenn Du
mir einen Lösungsvorschlag geben könntest.
1. in der Userform habe ich keinen Buttom sondern eine Listbox mit 2
Auswahlmöglichkeiten
2. Nach erfolgter Anwahl möchte ich einen Dialog mit dem User
aufbauen, wobei bei Wahl 1 (Listindex) der Focus auf textbox1 (tbaa1)
gesetzt wird. Bei Wahl 2 soll Textbox 10 (tbaa10) den Focus erhalten.
das hast du schon realisiert?
Post by Frederik
3. Mit Auswahl der Textbox soll jetzt sofort ein Dialog zum User,
mittel Listboxen aufgenommen werden, aus denen wiederum die
entsprechend Textbox gefüllt wird. Der User kann lediglich eine
vorgegebene Auswahl treffen deren Plausibilität nach der letzten
Textbox im gesamten geprüft wird.
ok, wenn ich das richtig verstanden habe, willst du zu einigen TextBoxen
in ein und demselben Label Hilfetexte anzeigen?
Ich dachte, die sollen nur nach dem Hilfeschrei des Users angezeigt werden.
Dazu würde ich nicht, die aktivierte TextBox abfragen, sondern in jeder
TextBox, die einen Hilfetext zur Verfügung hat das Label anpassen.
Public Const cstrHilfeTextBox1 As String = _
"Hier kommt jetzt der" & _
vbNewLine & _
"Hilfetext für TextBox1"
Public Const cstrHilfeTextBox2 As String = _
"Hier kommt jetzt der" & _
vbNewLine & _
"Hilfetext für TextBox2"
Ebenfalls in das Standardmodul gehört die ausführende Prozedur.
Ich lagere die Sub deshalb aus, falls noch weitere Befehle dazu kommen,
oder sich irgendwas ändert. Dann muss nur diese eine Prozedur geändert werden
und nicht alle Codes der TextBoxen.
Public Sub WriteHelpText(strText As String)
UserForm1.Label1.Caption = strText
End Sub
Füge für jede TextBox mit Hilfetext folgende Ereignis Prozeduren im
Codemodul der UserForm ein. Passe die richtigen Konstanten mit
Private Sub TextBox1_Enter()
WriteHelpText cstrHilfeTextBox1
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
WriteHelpText ""
End Sub
Private Sub TextBox2_Enter()
WriteHelpText cstrHilfeTextBox2
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
WriteHelpText ""
End Sub
Sobald eine TextBox den Focus erhält, wird der Text in Label 1 angezeigt.
Beim Verlassen der TextBox wird dieser Text wieder gelöscht, falls als
nächstes eine TextBox ohne Hilfetext aktiviert wird.
Mit freundlichen Grüssen
Melanie Breden
--
- Microsoft MVP für Excel -www.melanie-breden.de
Hallo Melanie
Vielen Dank für Deine Unterstützung, die Sache läuft sehr gut und wie
gewünscht. Will Dich ab sofort in meine Nachtgebete einschließen.
Gruß
Frederik
Frederik
2007-02-08 18:29:55 UTC
Permalink
Post by Andreas Schmidt
Hallo Frederik,
Post by Frederik
Vorab vielen Dank für Deinen Vorschlag aber ,,Uff", Du hast am anderen
Ende keinen Profi sondern einen noch dummen Anfänger, welcher just
versucht das Laufen zu erlernen.
Anfänger zu sein ist doch kein Problem, aber bist du deswegen dumm ;-)
Post by Frederik
Will Dir mein Vorhaben näher erklären und würde mich freuen wenn Du
mir einen Lösungsvorschlag geben könntest.
1. in der Userform habe ich keinen Buttom sondern eine Listbox mit 2
Auswahlmöglichkeiten
2. Nach erfolgter Anwahl möchte ich einen Dialog mit dem User
aufbauen, wobei bei Wahl 1 (Listindex) der Focus auf textbox1 (tbaa1)
gesetzt wird. Bei Wahl 2 soll Textbox 10 (tbaa10) den Focus erhalten.
das hast du schon realisiert?
Post by Frederik
3. Mit Auswahl der Textbox soll jetzt sofort ein Dialog zum User,
mittel Listboxen aufgenommen werden, aus denen wiederum die
entsprechend Textbox gefüllt wird. Der User kann lediglich eine
vorgegebene Auswahl treffen deren Plausibilität nach der letzten
Textbox im gesamten geprüft wird.
ok, wenn ich das richtig verstanden habe, willst du zu einigen TextBoxen
in ein und demselben Label Hilfetexte anzeigen?
Ich dachte, die sollen nur nach dem Hilfeschrei des Users angezeigt werden.
Dazu würde ich nicht, die aktivierte TextBox abfragen, sondern in jeder
TextBox, die einen Hilfetext zur Verfügung hat das Label anpassen.
Public Const cstrHilfeTextBox1 As String = _
"Hier kommt jetzt der" & _
vbNewLine & _
"Hilfetext für TextBox1"
Public Const cstrHilfeTextBox2 As String = _
"Hier kommt jetzt der" & _
vbNewLine & _
"Hilfetext für TextBox2"
Ebenfalls in das Standardmodul gehört die ausführende Prozedur.
Ich lagere die Sub deshalb aus, falls noch weitere Befehle dazu kommen,
oder sich irgendwas ändert. Dann muss nur diese eine Prozedur geändert werden
und nicht alle Codes der TextBoxen.
Public Sub WriteHelpText(strText As String)
UserForm1.Label1.Caption = strText
End Sub
Füge für jede TextBox mit Hilfetext folgende Ereignis Prozeduren im
Codemodul der UserForm ein. Passe die richtigen Konstanten mit
Private Sub TextBox1_Enter()
WriteHelpText cstrHilfeTextBox1
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
WriteHelpText ""
End Sub
Private Sub TextBox2_Enter()
WriteHelpText cstrHilfeTextBox2
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
WriteHelpText ""
End Sub
Sobald eine TextBox den Focus erhält, wird der Text in Label 1 angezeigt.
Beim Verlassen der TextBox wird dieser Text wieder gelöscht, falls als
nächstes eine TextBox ohne Hilfetext aktiviert wird.
Mit freundlichen Grüssen
Melanie Breden
--
- Microsoft MVP für Excel -www.melanie-breden.de
Hallo Melanie
Vielen Dank für Deine Unterstützung, die Sache läuft sehr gut und wie
gewünscht. Werde Dich ab sofort in meine Nachtgebete einschließen.
Gruß und gute Zeit
Frederik

Wolfgang Habernoll
2007-02-08 12:00:01 UTC
Permalink
Hallo Frederik
Post by Frederik
Textboxen in Userform
Hallo an alle,
ich habe eine Userform mit gesamt 20 Textboxen. Zu einigen Boxen
sollen dem User Hilfstexte angezeigt werden. Die einzelnen Boxen
können sowohl mit Mouse wie auch mit Tab angewählt werden.
Wie kann festgestellt werden, welche Textbox den Focus hat?
Gibt die Box, welche den Focus hat, einen verarbeitbaren Rückgabewert?
Bspl. If Textbox1.focused = true then label1. caption ist "bla bla"
noch ein paar Möglichkeiten

versuche es doch mal mit ControlTipText = "blabla" ohne zusätzlichem
Label. Der Text wir angezeigt wenn du mit der Maus über die Texbox fährst.

Private Sub UserForm_Initialize()
UserForm1.TextBox1.ControlTipText = "Hallo Box 1"
'usw.
End Sub

oder halt mit der für jede Box über die Ereignisse gesteuert

Private Sub TextBox1_Enter()
Label1.Caption = "Hall Textbox1"
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Label1.Caption = ""
End Sub

mfG
Wolfgang Habernoll
Frederik
2007-02-08 12:32:08 UTC
Permalink
Post by Andreas Schmidt
Hallo Frederik
Post by Frederik
Textboxen in Userform
Hallo an alle,
ich habe eine Userform mit gesamt 20 Textboxen. Zu einigen Boxen
sollen dem User Hilfstexte angezeigt werden. Die einzelnen Boxen
können sowohl mit Mouse wie auch mit Tab angewählt werden.
Wie kann festgestellt werden, welche Textbox den Focus hat?
Gibt die Box, welche den Focus hat, einen verarbeitbaren Rückgabewert?
Bspl. If Textbox1.focused = true then label1. caption ist "bla bla"
noch ein paar Möglichkeiten
versuche es doch mal mit ControlTipText = "blabla" ohne zusätzlichem
Label. Der Text wir angezeigt wenn du mit der Maus über die Texbox fährst.
Private Sub UserForm_Initialize()
UserForm1.TextBox1.ControlTipText = "Hallo Box 1"
'usw.
End Sub
oder halt mit der für jede Box über die Ereignisse gesteuert
Private Sub TextBox1_Enter()
Label1.Caption = "Hall Textbox1"
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Label1.Caption = ""
End Sub
mfG
Wolfgang Habernoll
Hallo Wolfgang
Danke für Deinen Vorschlag aber ich denke, dass ich mein Vorhaben so
nicht realisieren kann. Ich brauche eine Dialogführung zum User den
ich für jede textbox mit einer Auswahl-Listbox aufbauen möchte.
Gruß
Frederik
Loading...