Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1808to1812
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

TextBox1.SetFocus in UF geht nicht

TextBox1.SetFocus in UF geht nicht
05.02.2021 15:19:42
Peter
Hallo ihr Excel-Spezialisten,
ich habe ein kleines Problem mit TextBox1.SetFocus.
Ich befülle die UF mit nachstehendem Code der TabIndex = 0, die Aktiverreihenfolge für TB1 ist an erster Stelle:

Private Sub UserForm_Initialize()
Dim wb As Workbook
Dim wksTB1 As Worksheet
Dim Zeile%  'erforderlich für ListBox1
Dim avntValues As Variant       'benötigt für ComboBox3
Dim ialngIndex As Long      'benötigt für ComboBox3
Dim aRow, I As Long     'benötigt für ComboBox1
'Anfang Bildschirmgroesse
Application.WindowState = xlMaximized
With Me
.Height = Application.Height
.Width = Application.Width
End With
'Ende Bildschirmgroesse
Set wb = ThisWorkbook
Set wksTB1 = wb.Worksheets("Tabelle1")
'Auswahl Grund der Eintragung
With ComboBox2
.RowSource = "=Hilfstabelle!$C$2:$C$3"
End With
'Ende ComboBox2
'Anfang befüllen ListBox1
With ListBox1
Zeile = wksTB1.Cells(Rows.Count, 1).End(xlUp).Row
.RowSource = "Tabelle1!A1:H" & Zeile
.ColumnHeads = False
.ColumnCount = 7
.ColumnWidths = "3,0cm;4,1cm;2,5cm;3,1cm;2,0cm;2,0cm;2,0cm"
'.ListIndex = Zeile - 1 'markiert die letzte Zeile nicht erforderlich
End With
'Ende ListBox1 füllen
'Anfang - letzten Eintrag in Listbox1 anzeigen
With ListBox1
If .ListCount > 0 Then
.TopIndex = .ListCount
End If
End With
'Ende - letzten Eintrag in Listbox1 anzeigen
'Ende befüllen ListBox1
'Beginn ComboBox3
'vorhandener Anfangbestand € Briefmarkenwerte
With Worksheets("Berechnungstabelle")
avntValues = .Range(.Cells(2, 1), .Cells( _
.Cells(.Rows.Count, 1).End(xlUp).Row, 14)).Value2
End With
With ComboBox3
For ialngIndex = 1 To UBound(avntValues)
If avntValues(ialngIndex, 1) > "0" Then     'zeigt nur die Werte an die über "0" _
sind -  "" zeigt alle Werte an
Call .AddItem(Format(avntValues(ialngIndex, 1), "#0.00"))
.List(.ListCount - 1, 1) = Format(avntValues(ialngIndex, 14), "0")
End If
Next
End With
'Ende ComboBox3
'Anfang benötigt für ComboBox1 füllen
Call ComboBox1_fuellen
Me.Label37.Visible = True
Me.Label37.Caption = ""
CommandButton8.Visible = False
If ComboBox1.Value = "neue Buchung hinzufügen" Then
'        If ComboBox1.ListIndex = 0 Then
Label37.Caption = "für neue Buchung bitte u. a. Felder ausfüllen - Button ""Buchen"" _
drücken oder" _
& vbLf & "bitte Buchung auswählen, Daten ändern - Button Andern drücken  _
oder" _
& vbLf & "Abbruch bzw. Formular beenden!"
With TextBox1
.SetFocus
.SelStart = 0
End With
End If
'Ende benötigt für ComboBox1 füllen
Me.TextBox11.Visible = False
'Anfang bei erforderlich für Passwort bei Service
CommandButton23.Enabled = False
CommandButton24.Visible = False
CommandButton25.Visible = False
CommandButton30.Visible = False
CommandButton31.Visible = False
Me.TextBox17.PasswordChar = "*"
'Ende bei erforderlich für Passwort bei Service
End Sub
Was muss ich bitte ändern, damit die TextBox1 beim Öffnen den Focus erhält.
UserForm_Activate enthält derzeit nichts.
Gruss
Peter

28
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 15:27:27
Yal
Hallo Peter,
lege TextBox1.SetFocus als allerletze Anweisung in der Sub.
Wenn Du ein anderen Objekt danach anfasst, wandert der Focus dorthin.
VG
Yal
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 15:34:21
Peter
Hallo Yal,
das ist nicht das von mir gewünschte Ziel. Dann kann ich ja gleich die TextBox1 markieren.
Kennst Du eine andere Lösung?
Gruss
Peter
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 15:45:38
Yal
Hallo Peter,
"Was muss ich bitte ändern, damit die TextBox1 beim Öffnen den Focus erhält."
Wenn da nicht dein Ziel ist, mit der Bitte um deine Ziel nochmal klarer (oder mindestens anders) auszudrücken.
Die Beschreibung "das ist nicht das von mir gewünschte Ziel" bringt mich keine Schritt weiter. Oder wie siehst Du das?
VG
Yal
Anzeige
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 15:52:20
Peter
Hallo Yal,
das von mir gewünschte Ziel ist es, dass die TextBox1 den Focus erhält, sobald die UF geöffnet wird.
Die soll geschehen, ohne dass ich etwas ausführen muss.
Ich habe jetzt einen Test gemacht.
In einer anderen UF habe ich nur die TB1. Wenn ich in UF_Initialize einfüge TextBox1.setFocus dann wird dies ausgeführt.
Jetzt habe ich an der Original UF alles deaktiviert bis auf TextBox1.SetFocus und der Focus wird nicht gesetzt.
Warum nicht, frage ich mich.
Gruss
Peter
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 16:18:43
Yal
Hallo Peter,
so, jetzt bin ich bei Dir.
Ich habe folgende Test gemacht: ein UF, zwei TB (TextBox1, TextBox2), zwei Ereignisse, sonst nichts:
Private Sub UserForm_Activate()
TextBox2.SetFocus
End Sub
Private Sub UserForm_Initialize()
TextBox1.SetFocus
End Sub
2 Tests:
_ wie oben gegeben
_ TB1 und 2 in Activate und Initialize ausgetauscht.
Daraus schient sich zu ergeben, dass SetFocus nur in UserForm_Activate wahrgenommen wird. Klar: die Ereignisse laufen in der Reihenfolge Initialize, Activate ab.
Mache ich Activate weg -bleibt nur initialize allein- wird Initialize wahrgenommen und Focus liegt, wo Initialize sagt.
Warum es bei Dir den Initialize nicht wahrgenommen wird, obwohl nichts anderes vorliegt, ist nicht nachvollziehbar. Exceldatei speichern und Excel neustarten könnte erfrischend wirken. (Aber wir haben nicht mehr Windows Vista)
Die Lösung wäre aber, ein UserForm_Activate einzuführen und den SetFocus dort zu legen.
VG
Yal
Anzeige
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 16:28:45
Peter
Hallo Yal,
besten Dank. Habe in einer anderen Datei das nachgebaut.
Die UF steht auf ShowModal=false. Aus der UF Initialice habe ich die TB1.SetFocus entfernt und in UF_Activate eingefügt. - Funktioniert wie bei Dir auch.
Funktioniert aber nicht in meiner Orginal-UF.
Ich habe alle Excel-Dateien geschlossen und neu aufgemacht gleiches Ergebnis.
Gruss
Peter
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 16:04:08
Peter
Hallo Yal,
wie bereits ausgeführt, geht TextBox1.SetFocus nicht, weil die UF ShowModal= False ist. Diese Einstellung benötige ich aber, damit die anderen UF geöffnet bzw. geschlossen werden. Wenn ich ShowModal=True einstelle kommt Fehlermeldung dass ein gebundenes Formualar nicht ... wenn ungebundenes geöffnet ist.
Gibt es hierfür eine Lösung?
Gruss
Peter
Anzeige
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 16:50:29
Yal
Hallo Peter,
nun ja... die Information ShowModal = False
wäre in dem Fall von einer gewissen Relevanz...
Es ist tatsächlich so, dass bei non-Modal der Fokus verloren geht und beim Reaktivieren des Forms kein Ereignis ausgelöst wird, weder im Form noch im Worksheet.
Es gibt im Net einige komplizierten Workaround. mMn de mühe nicht Wert.
Die einzige Lösung, die ich sonst sehe, ist direkt in TextBox1 anzuklicken anstatt irgendwo auf dem Form.
schönes WE
Yal
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 16:52:12
Peter
Hallo Yal,
besten Dank für Deine Hilfe.
Wünsche Dir auch ein schönes Wochenende.
Gruss
Peter
Anzeige
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 16:06:37
onur
Was steht denn in ComboBox1 alles?
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 16:11:56
Peter
Hallo Onur,
ich habe jetzt alles getestet. Das mit der ComboBox1 ist überhaupt kein Problem.
Der Focus auf TB1 funktioniert, wenn ich die UF auf ShowModal=true setze.
Geht aber nicht, weil sonst andere UF nicht mehr funktionieren.
Habe das auch ausprobiert, wenn ich TextBox1.SetFocus in Userform_Activate einfüge - geht auch nicht.
Hast Du eine Idee?
Gruss
Peter
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 16:13:11
onur
WENN du mal meine Frage beantwortest - eventuell.
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 16:16:30
Peter
Hallo Onur,
die ComboBox1 ist beim Öffnen gefüllt mit dem Text "neue Buchung hinzufügen".
Die ComboBox1 wird mit nachstehendem Code befüllt:

'Auswahl bei Änderung
Private Sub ComboBox1_fuellen()
Dim iRow As Integer
Dim wks As Worksheet
Set wks = Worksheets("Tabelle1")
With ComboBox1
.Clear
.ColumnCount = 4
.ColumnWidths = "4,5 cm; 2,5 cm; 2,5 cm; 2,0 cm"
.AddItem "neue Buchung hinzufügen"
For iRow = 2 To wks.Range("A65536").End(xlUp).Row
.AddItem wks.Cells(iRow, 1).Value
.List(.ListCount - 1, 1) = wks.Cells(iRow, 2).Value
.List(.ListCount - 1, 2) = Format(wks.Cells(iRow, 3).Value, "#0.00")
.List(.ListCount - 1, 3) = wks.Cells(iRow, 4).Value
Next
.ListIndex = 0 '"neue Buchung hinzufügen"
End With
End Sub
Gruss
Peter
Anzeige
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 16:25:03
onur
Dann verstehe ich aber diese Zeile nicht:
If ComboBox1.Value = "neue Buchung hinzufügen" Then

da kann doch nix anderes stehen als "neue Buchung hinzufügen", da der Code ja im Initialize-Event ist.
Poste doch mal die Datei - du hast evtl irgendwo irgendein Event, das der Textbox den Focus klaut.
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 16:33:49
Peter
Hallo Onur,
leider ist die Datei zu umfangreich um diese zu übersenden.
Die Zeile "If ComboBox1.Value = "neue Buchung hinzufügen" Then" habe ich deaktiviert. Gleicher Fehler.
Ich habe alles in UF_Initialize deaktiviert, ausser TB1.SetFocus - gleicher Fehler.
Ich habe alle Excel-Dateien beendet und wieder geöffnet - gleicher Fehler.
Ich habe in UF_Activate TB1.SetFocus eingefügt - gleicher Fehler.
Ich habe ShowModal=False umgeändert auf ShowModal=True - alles aktiviert - kein Fehler.
Für die anderen Formulare benötige ich aber ShowMOdal=False, das sonst Fehlermeldung bezüglich ungebundenem Formular usw.
Hast Du eine Idee?
Gruss
Peter
Anzeige
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 16:37:41
onur
Ohne die Datei? Wie denn?
Ich vermute, dass die Textbox trotzdem den Focus hat, aber der Cursor nicht sichtbar ist. Drück mal, wenn die Userform aufgeht, einmal auf Tab.
Achte darauf, wohin der Focus wandert.
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 16:41:44
Peter
Hallo Onur,
Deine Vermutung ist richtig. Wenn ich Tab drücke springt der Cursor auf die ComboBox2. Diese ist an zweiter Stelle der Aktivierreihenfolge.
Wie kann man erreichen, dass der Cursor sichtbar wird?
Gruss
Peter
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 16:46:53
onur
Du könntest im Click_Event der Form so viele
SendKeys "{TAB}"

schicken, wie du Steuerelemente hast.
Dann springt der Cursor auf die Box zurück.
Anzeige
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 16:56:46
Peter
Hallo Onur,
Was ist bitte Click_Event der Form? Ich gehe davon aus dass alle TB und CmdBtn ect. Steuerelemete sind.
Dann müsste ich 27 TAB setzen. Ist das so richtig?
Wenn ich die UF öffne und per Tab alle Elemente durchlaufe, dann wird auch TB1 mit sichtbarem Cursor angezeigt.
Gruss
Peter
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 17:00:25
Yal
Onur hat recht: Ereignis UserForm_Click wird ausgelöst, aber den xx.SetFocus nicht wahrgenommen.
Ich komme mit folgendem nah zum gewünschte ergebnis:
Private Sub UserForm_Click()
SendKeys "{TAB}+{TAB}"
End Sub
tab und Shift tab werden somit simuliert.
VG
Yal
Anzeige
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 17:03:04
onur
SHIFT TAB ist natürlich besser, da nur EINMAL nötig.
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 17:09:03
Peter
Hallo Onur,
besten Dank für Deine Hilfe.
Die Lösung von Yal funktioniert.
Was ich jedoch nicht verstehe: Tab und Shift Tab werden somit simmuliert. Wo ist bitte Shift?
Gruss
Peter
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 17:09:45
onur
Das Plus-Zeichen.
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 17:11:08
Peter
Hallo Onur,
besten Dank.
Wünsche Dir ein schönes Wochenende.
Gruss
Peter
Gerne !
05.02.2021 17:11:45
onur
Ebenfalls!
AW: Gerne !
05.02.2021 17:13:12
Yal
Ich möchte anmerken, dass ich nicht auf die Lösung gekommen wäre, ohne die Beiträge von Onur.
Teamarbeit eben. ;-)
Schönes WE
VG
Yal
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 17:06:32
Peter
Hallo Yal,
Deine Lösung funktioniert einwandfrei.
Besten Dank.
Gruss
Peter
Anzeige
AW: TextBox1.SetFocus in UF geht nicht
05.02.2021 17:01:36
onur
Die Userform selbst hat auch Events:
Private Sub UserForm_Click()
Dim i
For i = 1 To 27
SendKeys "{TAB}"
Next i
End Sub

Sobald du die Userform irgdendwo anklickst, wird der Code ausgeführt.
Das Problem mit VBmodeless ist, wenn die Userform einmal den Focus verliert, "verliert" auch die Textbox den Focus/Cursor.

110 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige