aximand
Goto Top

VBA Textbox fokussieren und Daten über Button eintragen

Hallo, ich stehe mal wieder etwas auf dem Schlauch.

Es ist ein Userform gegeben in dem 2 Textboxen vorhanden sind und 10 Buttons mit Werten 0-9.

Nun möchte ich, dass der Anwender in die Textbox1 klickt und dann die Buttons drückt um die Zahlenwerte dort hinein zu schreiben.
Das funktioniert soweit.

Wenn aber der Anwender in die Textbox 2 klickt, dann sollen die Zahlenwerte der Buttons eben in jene Textbox geschrieben werden.
Ich muss also vorher abfragen, ob der Focus auf Textbox 1 oder 2 liegt/lag.
Das würde ich gerne mit einer Sub machen: Klicke ich in Textbox 1, dann wird bFocusPersonal (Textbox1) = true und bFocusVorgang (Textbox2) = false

Ich suche sowas wie Sub txtPersonalnummer_Click() oder Sub txtPersonalnummer_setFocus

Könnt ihr mir folgen? :D


Private Sub UserForm_Activate()
Dim objCB As Object
Dim L As Long
For Each objCB In Me.Controls
    If TypeOf objCB Is CommandButton Then
        ReDim Preserve UF(L)
        Set UF(L) = New UserForm1
        Set UF(L).Cb = objCB
        L = L + 1
    End If
Next
End Sub

Private Sub Cb_Click()
'If UserForm1.txtPersonalnummer.SetFocus Then  

'MsgBox "Focus Personal = " & bFocusPersonal  
'MsgBox "Focus Auftrag = " & bFocusVorgang  

'End If  


'If bFocusPersonal = True Then  
If Cb.Caption = "DEL" Then  
UserForm1.txtPersonalnummer.Text = Left(UserForm1.txtPersonalnummer.Text, Len(UserForm1.txtPersonalnummer.Text) - 1)
Else
UserForm1.txtPersonalnummer.Text = UserForm1.txtPersonalnummer.Text & Cb.Caption
End If
'ElseIf bFocusVorgang = True Then  
If Cb.Caption = "DEL" Then  
UserForm1.txtVorgang.Text = Left(UserForm1.txtVorgang.Text, Len(UserForm1.txtVorgang.Text) - 1)
Else
UserForm1.txtVorgang.Text = UserForm1.txtVorgang.Text & Cb.Caption
End If
'End If  
End Sub

Private Sub txtPersonalnummer_Click()
bFocusPersonal = True
bFocusVorgang = False


End Sub

Content-Key: 340065

Url: https://administrator.de/contentid/340065

Printed on: April 19, 2024 at 19:04 o'clock

Mitglied: 133417
Solution 133417 Jun 08, 2017 updated at 11:36:51 (UTC)
Goto Top
Hi.
Definiere eine Variable für ein Control. Im Enter-Event des Textboxen setzt du dann die Variable auf die jeweilige Textbox und weist so immer welche Textbox als letztes aktiviert wurde, und kannst den Inhalt der Textbox um deine Nummern ergänzen indem du den Inhalt über die Variable setzt.
Dim c As Control
Private Sub TextBox1_Enter()
    Set c = TextBox1
End Sub

Private Sub TextBox2_Enter()
    Set c = TextBox2
End Sub

Beispiel-File:
https://we.tl/EeFixIF1Lt

Gruß