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

Welche Textbox hat den Focus

Forumthread: Welche Textbox hat den Focus

Welche Textbox hat den Focus
28.06.2004 08:34:03
Roland
Hallo,
in einer Userform habe ich mehrere Textboxen! Nun möchte ich über die F12-Taste oder CommandButton den Kalender aufrufen, ein Datum auswählen und in die aktive Textbox eintragen lassen. Nur wie weiß ich, welche textbox das gerade ist.
Die Textbox habe ich so aktiviert:
Sub TextBoxFrei(zeins)
num = MultiPage1.Value + 1
For z = 2 To 40
controls("TextBox" & z).Enabled = True
Textfeld(z) = controls("TextBox" & z).Value
Next z
controls("TextBox" & 2).SetFocus
End Sub
Der Kalender wird normal über einen Button aktiviert, das ist kein Problem:

Private Sub Kalender_Click()
Calender.Show
End Sub

Ich möchte eigentlich vermeiden, für jede einzelne Textbox eine Routine zu schreiben z.B.:

Private Sub textbox2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Gruß
Roland

		
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Welche Textbox hat den Focus
Josef
Hallo Roland!
Stelle in den Eigenschaften des CommandButtons "TakeFocusOnClick" auf False.
Als Beispiel wird hier das aktuelle Datum eingetragen, das musst du halt an deine
Bedürfnisse anpassen

Private Sub CommandButton1_Click()
If Me.ActiveControl.Name Like "TextBox*" Then
Me.ActiveControl = Date
Else
MsgBox "Es ist keine TextBox aktiv!"
End If
End Sub

Gruß Sepp
Anzeige
AW: Welche Textbox hat den Focus
28.06.2004 12:30:04
Roland
Hallo Sepp,
besten Dank für die schnelle Anwort. Ich habs auch schon probiert, funktioniert aber noch nicht, da die Textboxen in einer Multipage1 (mit Page1 bis Page10) abgelegt sind und Deine Formel daher immer die Multipage1 als ActiveControl ausgibt!
Vieleicht hast du hier auch noch einen Rat für mich!
Herzlichen Dank
Roland
Anzeige
AW: Welche Textbox hat den Focus
Josef
Hi roland,
dann so.

Private Sub CommandButton1_Click()
If Me.MultiPage1.SelectedItem.ActiveControl.Name Like "TextBox*" Then
Me.MultiPage1.SelectedItem.ActiveControl = Date
Else
MsgBox "Es ist keine TextBox aktiv!"
End If
End Sub

Gruß Sepp
Anzeige
AW: Welche Textbox hat den Focus
28.06.2004 13:10:26
Roland
Hallo Sepp,
das war's, super!
Besten Dank
Roland
;
Anzeige
Anzeige

Infobox / Tutorial

Textbox-Fokus in Excel UserForms verwalten


Schritt-für-Schritt-Anleitung

Um die aktive Textbox in einer UserForm zu identifizieren und den Fokus darauf zu setzen, kannst du folgende Schritte befolgen:

  1. Benutze den richtigen Code für den CommandButton: Setze die Eigenschaft TakeFocusOnClick des CommandButtons auf False, damit der Fokus nicht verloren geht.

    Private Sub CommandButton1_Click()
       If Me.ActiveControl.Name Like "TextBox*" Then
           Me.ActiveControl = Date
       Else
           MsgBox "Es ist keine TextBox aktiv!"
       End If
    End Sub
  2. Berücksichtige die Multipage-Steuerung: Wenn deine Textboxen innerhalb einer Multipage-Steuerung liegen, musst du den Code anpassen, um die aktive Textbox korrekt zu identifizieren.

    Private Sub CommandButton1_Click()
       If Me.MultiPage1.SelectedItem.ActiveControl.Name Like "TextBox*" Then
           Me.MultiPage1.SelectedItem.ActiveControl = Date
       Else
           MsgBox "Es ist keine TextBox aktiv!"
       End If
    End Sub
  3. Aktiviere die Textboxen: Stelle sicher, dass alle Textboxen aktiviert sind, bevor du den Fokus setzt.

    Sub TextBoxFrei(zeins)
       num = MultiPage1.Value + 1
       For z = 2 To 40
           controls("TextBox" & z).Enabled = True
       Next z
       controls("TextBox" & 2).SetFocus
    End Sub

Häufige Fehler und Lösungen

  • Fehler: "Es ist keine TextBox aktiv!"

    • Lösung: Stelle sicher, dass die richtige Textbox im Fokus ist, bevor du den Button klickst. Überprüfe auch, ob TakeFocusOnClick auf False gesetzt ist.
  • Fehler: Aktive Kontrolle gibt immer die Multipage zurück.

    • Lösung: Verwende Me.MultiPage1.SelectedItem.ActiveControl anstelle von Me.ActiveControl, um den Fokus auf die Textbox innerhalb der Multipage zu erhalten.

Alternative Methoden

Eine alternative Methode könnte darin bestehen, das MouseMove-Ereignis jeder Textbox zu verwenden, um den Fokus zu setzen. Das kann jedoch unübersichtlich werden, wenn du viele Textboxen hast. Eine bessere Lösung wäre, den Fokus zentral zu verwalten, wie bereits beschrieben.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du den Kalender in die aktive Textbox einfügen kannst:

Private Sub Kalender_Click()
    If Me.ActiveControl.Name Like "TextBox*" Then
        Me.ActiveControl = Date
    End If
End Sub

Dies stellt sicher, dass das aktuelle Datum in die Textbox eingefügt wird, die gerade den Fokus hat.


Tipps für Profis

  • Verwende WithEvents, um eine Klasse zu erstellen, die alle Textboxen verwaltet. Dies ermöglicht eine zentralisierte Ereignisbehandlung und vereinfacht den Code.
  • Halte deine UserForm aufgeräumt und beschrifte die Steuerelemente sinnvoll, um die Wartung zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich den Fokus auf eine bestimmte Textbox setzen?
Du kannst dies tun, indem du die Methode SetFocus auf der gewünschten Textbox aufrufst. Beispiel:

TextBox2.SetFocus

2. Was mache ich, wenn die Textboxen in verschiedenen Seiten einer Multipage sind?
Nutze Me.MultiPage1.SelectedItem.ActiveControl, um sicherzustellen, dass du die richtige Textbox auswählst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige