Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Set Focus funktioniert nicht

Forumthread: Set Focus funktioniert nicht

Set Focus funktioniert nicht
05.07.2003 19:37:18
Walter
Hallo oder Guten Abend!
Habe ein Problem und fummmmmel die ganze Zeit ohne Erfolg.
Mein Makro:

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TextBox2) Then
MsgBox "Es ist nur Text erlaubt."
TextBox2 = " "
TextBox2.SetFocus
With TextBox2
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
TextBox2.SetFocus
'Cancel = True                  'True=CommandButton) ist die Schaltfläche Abbrechen.
'False=Schaltfläche nicht Abbrechen (Voreinstellung).
End If
Worksheets("Datenbank").Range("A15") = TextBox2
TextBox2.SetFocus
With TextBox2
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
TextBox2.SetFocus
End Sub

Leider ist der Focus nach der Eingabe einer Zahl nicht in der Textbox2 (ist ja jetzt Leer).
Oder liegt es an der "Datenfreigabe" Button ??? Ich muß ja nach der
MsgBox "Es ist nur Text erlaubt." mit dem Button Datenfreigabe bestätigen.
Hier mein Makro dazu:

Private Sub Datenfreigabe_Click()
TextBox1 = Format(Worksheets("Datenbank").Range("A1").Value, ("###,##0.00"))
'so holt von Tabelle rein, auch Format mit TAB-Taste direkt rein !
TextBox1.SetFocus
With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End Sub

Gruss Walter
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Richtigstellung
05.07.2003 22:01:07
Hary
Das (auch) in der Einleitung ist nicht auf dich bezogen sondern auf mich, da VBA den Kopf wegen kleinigkeiten zum rauchen bringt.
;-) hary

AW: Richtigstellung
08.07.2003 20:49:00
Walter
Hallo Hary,
bin nochmals dran habe wohl eine Möglichkeit gefunden.
Melde mich.
Gruss Walter

AW: Set Focus funktioniert nicht
05.07.2003 21:51:13
Hary
Hallo Walter
Ich fange auch gerade mit VBA an. Wenn ich das richtig verstanden habe soll der Focus nachdem die MsgBox bestaetig wurde (wegen Eingabe einer Nummer)wieder in die TextBox.Probiers mal so vieleicht ist es das richtige.

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TextBox2) = True Then
TextBox2 = " "
MsgBox "Es ist nur Text erlaubt."
TextBox2.SetFocus
With TextBox2
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Cancel = True                  'True=CommandButton) ist die Schaltfläche Abbrechen.
'False=Schaltfläche nicht Abbrechen (Voreinstellung).
End If
If IsNumeric(TextBox2) = False Then
Worksheets("Datenbank").Range("A15") = TextBox2
With TextBox2
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
TextBox2.SetFocus
End If
End Sub


Hary

Anzeige
AW: Set Focus funktioniert nicht leider immer noch
06.07.2003 22:48:19
Walter
Hallo Hary,
herzlichen Dank, habe alles probiert leider ohne Erfolg.
Hinweis: Habe 'Cancel = True ungültig gemacht, dadurch wurde die die nächste Textbox selektiert, also ein kleiner Erfolg.
Müsste jetzt nur noch mit der Textbox2 geschehen.
Gruss Walter

AW: Vieleicht noch ein Schritt
07.07.2003 22:34:03
Hary
Nabend Walter
Mit diesem Code liegt beim oeffnen des Formulars der SetFocus im Textfeld2. Bei der eingabe von einer Zahl erscheint die MSG-Box, und der Focus geht nach Textbox2 zurueck.Bei Eingabe von Buchstaben und druecken der Entertaste geht der Focus nach Textbox1.Laut deinem Code sollte aber doch irgendwas mit betaetigen der Datenfreigabetaste aus Zelle a1 eingetragen werden oder?

Private Sub TextBox2_change()
If IsNumeric(TextBox2) = True Then
TextBox2 = " "
MsgBox "Es ist nur Text erlaubt."
TextBox2.SetFocus
With TextBox2
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Else
TextBox2.SetFocus
Worksheets("Datenbank").Range("A15") = TextBox2
With TextBox2
.SetFocus
.SelStart = 10     'auf 10 geaendert damit die Texteingabe verlaengert wird
.SelLength = Len(.Text)
End With
End If
End Sub


Private Sub Datenfreigabe_Click()
TextBox1 = Format(Worksheets("Datenbank").Range("A1").Value, ("###,##0.00"))
'so holt von Tabelle rein, auch Format mit TAB-Taste direkt rein !
TextBox1.SetFocus
With TextBox1
.SetFocus
.SelStart = 10
.SelLength = Len(.Text)
End With
End Sub

Gruss Hary

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Set Focus in Excel VBA richtig anwenden


Schritt-für-Schritt-Anleitung

Um den Fokus auf ein Textfeld in Excel VBA richtig zu setzen, kannst du folgende Schritte befolgen:

  1. Öffne das VBA-Editor-Fenster durch Drücken von ALT + F11.

  2. Erstelle ein UserForm mit mindestens zwei TextBoxen.

  3. Füge den folgenden Code in das entsprechende TextBox-Exit-Ereignis ein:

    Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
       If IsNumeric(TextBox2) Then
           MsgBox "Es ist nur Text erlaubt."
           TextBox2 = ""
           TextBox2.SetFocus
       Else
           Worksheets("Datenbank").Range("A15") = TextBox2
       End If
    End Sub
  4. Achte darauf, das Cancel-Attribut entsprechend zu setzen, um zu verhindern, dass der Fokus die TextBox verlässt, wenn ungültige Eingaben vorhanden sind:

    Cancel = True
  5. Füge auch Code für die Datenfreigabe-Schaltfläche hinzu, um sicherzustellen, dass die richtige TextBox den Fokus erhält:

    Private Sub Datenfreigabe_Click()
       TextBox1.SetFocus
    End Sub

Häufige Fehler und Lösungen

  • SetFocus funktioniert nicht: Achte darauf, dass du SetFocus im richtigen Kontext aufrufst. Wenn du den Fokus auf eine TextBox setzen möchtest, stelle sicher, dass der Code nach der Bestätigung der MsgBox ausgeführt wird.

  • Cancel wird ignoriert: Wenn du Cancel auf True setzt, wird der Fokus nicht auf das nächste Steuerelement verschoben. Stelle sicher, dass du es nur setzt, wenn die Eingabe ungültig ist.

  • Fokus geht nach dem Aufruf von SetFocus verloren: Überprüfe, ob andere Ereignisse oder Steuerelemente den Fokus abnehmen. Verwende DoEvents, um sicherzustellen, dass das UI-Update abgeschlossen ist, bevor du den Fokus setzt.


Alternative Methoden

  • HTML Set Focus: Wenn du mit HTML und VBA möchtest, dass ein bestimmtes Element den Fokus erhält, kannst du set focus im HTML-Dokument verwenden, um die Benutzererfahrung zu verbessern.

  • Set Focus in anderen Steuerelementen: Du kannst den Fokus auch auf Schaltflächen oder andere Steuerelemente setzen. Der Befehl bleibt gleich:

    CommandButton1.SetFocus

Praktische Beispiele

Hier sind einige Beispielcodes, die du in deinen Projekten verwenden kannst:

  1. Fokus nach Eingabe in TextBox setzen:

    Private Sub TextBox2_Change()
       If IsNumeric(TextBox2) Then
           MsgBox "Es ist nur Text erlaubt."
           TextBox2.SetFocus
       End If
    End Sub
  2. Verwendung von .SelStart und .SelLength:

    With TextBox2
       .SetFocus
       .SelStart = 0
       .SelLength = Len(.Text)
    End With
  3. Kombination mit anderen Steuerelementen:

    Private Sub CommandButton1_Click()
       TextBox1.SetFocus
    End Sub

Tipps für Profis

  • Verwende DoEvents: Um sicherzustellen, dass alle anderen Operationen abgeschlossen sind, bevor du SetFocus aufrufst, füge DoEvents ein.

  • Vermeide unnötige SetFocus-Aufrufe: Setze den Fokus nur, wenn es notwendig ist. Zu viele Aufrufe können die Benutzererfahrung stören.

  • Teste in verschiedenen Szenarien: Manchmal können bestimmte Bedingungen den Fokus beeinflussen. Teste deine Anwendung in verschiedenen Eingabeszenarien.


FAQ: Häufige Fragen

1. Warum funktioniert SetFocus nicht in meiner TextBox? Stelle sicher, dass der Fokus nicht durch andere Steuerelemente oder Ereignisse weggenommen wird. Überprüfe auch die Logik in deinem Code.

2. Kann ich SetFocus auf ein anderes Steuerelement setzen? Ja, du kannst SetFocus auf Schaltflächen, Listenfelder und andere Steuerelemente anwenden, indem du den Namen des Steuerelements angibst.

3. Was ist der Unterschied zwischen SetFocus und GotFocus? SetFocus ist eine Methode, um den Fokus auf ein Steuerelement zu setzen, während GotFocus ein Ereignis ist, das ausgelöst wird, wenn ein Steuerelement den Fokus erhält.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige