Ich Würde Gern wenn ich Strg drücke, den Namen der aktuellen, also makierten Textbox auslesen lassen.
Wie geht das?
Vielen Dank
Michael
Private Sub Box1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyControl Then Application.Run "Name_Auslesen"
End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 17 Then MsgBox ActiveControl.Name
End Sub
Öffne das Excel-Dokument und erstelle ein UserForm oder öffne ein bestehendes.
Füge mehrere TextBoxen in das UserForm ein. Stelle sicher, dass du die TextBoxen benennst, z.B. TextBox1
, TextBox2
, usw.
Gehe in den VBA-Editor (Alt + F11).
Füge den folgenden Code in das UserForm ein:
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 17 Then MsgBox Me.TextBox1.Name
End Sub
Private Sub TextBox2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 17 Then MsgBox Me.TextBox2.Name
End Sub
Wiederhole diesen Schritt für jede TextBox oder verwende ein Klassenmodul für eine effizientere Lösung (siehe Abschnitt „Alternative Methoden“).
Teste das UserForm, indem du Strg drückst, während eine TextBox aktiv ist.
Fehler: Es wird „MultiPage1“ angezeigt.
Me.TextBox1.Name
anstelle von ActiveControl.Name
, um den spezifischen Namen der TextBox zu erhalten.Fehler: Der Code wird nicht ausgeführt.
Wenn du viele TextBoxen hast, empfiehlt es sich, ein Klassenmodul zu verwenden, um den Code zu optimieren. Hier ist ein einfacher Ansatz:
Erstelle ein neues Klassenmodul im VBA-Editor und nenne es „TextBoxHandler“.
Füge den folgenden Code ein:
Dim WithEvents TB As MSForms.TextBox
Public Sub Init(tb As MSForms.TextBox)
Set TB = tb
End Sub
Private Sub TB_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 17 Then MsgBox TB.Name
End Sub
In deinem UserForm, initialisiere das Klassenmodul für jede TextBox:
Dim Handler As TextBoxHandler
Private Sub UserForm_Initialize()
Set Handler = New TextBoxHandler
Handler.Init TextBox1
Set Handler = New TextBoxHandler
Handler.Init TextBox2
End Sub
Hier ist ein einfaches Beispiel, das zeigt, wie man den Namen der aktiven TextBox ausliest:
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 17 Then MsgBox "Der Name der TextBox ist: " & Me.TextBox1.Name
End Sub
Du kannst den Code für jede TextBox wiederholen oder die oben beschriebene beliebte Methode mit Klassenmodulen verwenden.
Me.
vor dem TextBox-Namen, um sicherzustellen, dass du auf die korrekte Instanz zugreifst.1. Wie kann ich den Namen der TextBox in einer MessageBox anzeigen?
Du kannst den Namen der TextBox mit MsgBox Me.TextBox1.Name
anzeigen, während du die Tastenkombination Strg drückst.
2. Was ist der Vorteil eines Klassenmoduls? Ein Klassenmodul ermöglicht es dir, wiederverwendbaren Code zu schreiben und die Verwaltung von Ereignissen für mehrere Controls zu optimieren.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen