Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Friedrichroda /
Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.

Focus auf Userform setzen
#1
Die UF1 ist auf ScreenMax, also volle Bildfüllung.
Ich mache in einer TextBox der UF1 einen Doppelklick.

Jetzt öffnet sich die UF2 und zeigt mir temporär für 3 Sekunden etwas an.
Diese UF2 ist klein und wird mittig über die UF1 eingeblendet.

Die UF2 schließt wieder nach 3 Sekunden.
Aber die UF1, aus der ich den Doppelklick machte, hat jetzt keinen Focus.

Ich muss, egal wo in dieser UF1, erst einmal klicken, um sie wieder zu reaktivieren.
Erst jetzt, nach dem "Hilfsklick" kann ich wieder aktiv in ihr alles auswählen...

Ein Userform1.SetFocus gibt es nicht.

Wie kann ich nach Schließen der UF2 den Focus automatisch auf die UF1 bringen, ohne diesen "Zwischenklick" machen zu müssen?
Gruß Achim
Jeder Mensch macht Fehler. Die Kunst liegt darin, sie zu machen, wenn keiner zuschaut.
to top
#2
Hallo Achim,

erst mal nur ein Ansatz - geht Setfocus auf die Textbox? Wie sieht denn der code Deiner zweiten UF aus? Wenn ich aus einer UF eine zweite öffne und diese manuell wieder beende, hat die erste den Focus.
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#3
Hallo Achim,

kann ich so nicht bestätigen. Auch wenn der Mauszeiger nicht angezeigt wird
oder eine Sanduhr oder ähnliches ist, kann man trotzdem normal weiter arbeiten
in der UF1 und nach Enter oder Tab ist auch optisch wieder alles i.O..
Witzig finde ich nur, das Du ein Mausereignis benutzt, aber Dir dann ein Mausklick
zu viel ist, um den Cursor wieder richtig anzuzeigen. ;-)

Gruß Uwe
to top
#4
Hier die Codes der ganzen Aktion

Code:
Private Sub TextBox_TZ_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
UF9_Variable = 2
Call TZ_Show(Me) 'Modul 9
End Sub
Code:
Private Sub UserForm_Activate()
If UF9_Variable = 2 Then
Select Case RS
  Case "O"
   TZ_Wert = Worksheets("Listen").Range("AC18")
  Case "U"
   TZ_Wert = Worksheets("Listen").Range("AC12")
  Case "M"
   TZ_Wert = Worksheets("Listen").Range("AC13")
  Case "S"
   TZ_Wert = Worksheets("Listen").Range("AC14")
  Case Else
   TZ_Wert = Worksheets("Listen").Range("AC18")
End Select
  Label1.Caption = Labels(201) 'Der Preis incl. TZ
  Label2.Caption = Labels(164)
  Application.Wait Now + TimeSerial(0, 0, 3)
  UserForm9.Hide
  
ElseIf UF9_Variable = 1 Then
  Label1.Caption = Labels(108) 'Die Artikelnummer
  Label2.Caption = Labels(169)
  Application.Wait Now + TimeSerial(0, 0, 2)
  UserForm9.Hide
End If
End Sub
Code:
Sub TZ_Show(myUF As UserForm)
If UF9_Variable = 1 Then
  With myUF
   .TextBox46.SelStart = 0
   .TextBox46.SelLength = .TextBox46.TextLength
   .TextBox46.Copy
    UserForm9.TextBox1 = .TextBox46.Value
    UserForm9.Show
  End With
ElseIf UF9_Variable = 2 Then
   UserForm9.TextBox1 = Format(TZ_Wert, "0.00" & " €")
   UserForm9.Show
End If
End Sub
Gruß Achim
Jeder Mensch macht Fehler. Die Kunst liegt darin, sie zu machen, wenn keiner zuschaut.
to top
#5
Hallo Achim,

ich kann da erst mal nichts fehlerhaftes sehen. Auch wenn ich in Excel 2013 mein zweites Userform hide, kommt der Focus wieder ins erste. Und auch die Textbox mit dem Doppelklick hat noch den Fokus. Eventuell muss man sich mal die Datei anschauen ...
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#6
Hallo Achim,

bei mir funktioniert es auch.

Ich an Deiner Stelle würde wie folgt vorgehen:
Eine neue Datei mit zwei Userformen den Textboxen erstellen und testen.
Wenn es in der neuen Datei klappt, dann schauen, was Du in Deiner bisherigen anders
gemacht hast.

Wenn Du nicht weiterkommst, kannst Du eine Kopie Deiner Datei anlegen und darin alle Inhalte
löschen und nur die zwei Userformen belassen und hier einstellen.
Gruß Atilla
to top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste