Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

Exit-Ereignis

Betrifft: Exit-Ereignis von: Niki
Geschrieben am: 13.11.2007 23:37:33

Hallo

Auf einem Userform sind 3 Comboboxen(Tabindex 0-2) und 3 Commandbuttons(Tabindex 3-5) platziert, nach vollständiger Eingabe in die Paarbox(Combobox1) soll überprüft werden ob dieser Name schon in einer Liste vorhanden ist, wenn nicht sollen verschiedenen Aktionen gemacht werden (klappt nicht vollständig), ansonsten soll nichts passieren (klappt).

Folgender Code für das Exit-Ereignis verwende ich:

Private Sub PaarBox_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
    If PaarBox.ListIndex > 0 Then 
        SpielerBox1.Value = PaarBox.List(PaarBox.ListIndex, 1)
        SpielerBox2.Value = PaarBox.List(PaarBox.ListIndex, 2)
        hinButton.SetFocus
    End If
End Sub



Aber nach der Abarbeitung hat nicht hinButton(commandbutton1) den Focus sondern Spielerbox2(Combobox3).

Wenn man mit einem Haltepunkt die Abarbeitung unterbricht und dann per Einzelschritt(F8) weitergeht sieht man das folgendes geschieht:
es klappt alles, sobald aber die Abarbeitung an hinbutton.Setfocus kommt fängt die gesamte Sub wieder von vorne an (denke ist korrekt) kommt wieder an hinButton.SetFocus geht darüber hinweg erreicht "End Sub"(bis hier hin hat nichts den Focus), das Userform wird kurz angezeigt (Sekundenbruchteile) danach ist die "End If"- Zeile wieder farblich markiert (ab hier hat hinButton den Focus(schwarzer Rahmen)) geht man dann aber weiter wird "End Sub"wieder erreicht ( bishier her hat hinButton den Focus) lässt man dann den Einzelschritt ausführen wird das UserForm ganz normal angezeigt aber Spielerbox2 hat den Focus.

Dies geschieht aber nur wenn man mit Enter oder Tabstop aus der Combobox rausgeht, klickt man aber mit der Maus auf einen der Commandbuttons oder in eine der beiden andern Comboboxen dann findet dieselbe Abarbeitung statt aber hinButton hat den Focus.

die 6 Elemnte haben folgende Einstellungen
Combobox1 Name=Paarbox TabIndex=0 TabStop=True
Combobox2 Name=Spielerbox1 TabIndex=1 TabStop=True
Combobox3 Name=Spielerbox2 TabIndex=2 TabStop=True
Commandbutton Name=hinbutton TabIndex=3 Tabstop=True
Commandbutton Name=endebutton TabIndex=4 Tabstop=True
Commandbutton Name=abbutton TabIndex=5 Tabstop=True

Kann mir einer Sagen woran das liegt, und/oder mir eine Lösung anbieten.

Danke Niki

  

Betrifft: AW: Exit-Ereignis von: Tino
Geschrieben am: 13.11.2007 23:47:24

Hallo,
füge Cancel = True in den Code mit ein.

Guss
Tino


  

Betrifft: AW: Exit-Ereignis von: Tino
Geschrieben am: 13.11.2007 23:59:37

Hallo,
oder lade mal die Datei.

Gruss
Tino


  

Betrifft: AW: Exit-Ereignis von: Niki
Geschrieben am: 14.11.2007 00:20:58

@ Tino

welche Datei?

Niki


  

Betrifft: AW: Exit-Ereignis von: Tino
Geschrieben am: 14.11.2007 01:00:30

Hallo,
ist in der Regel das in der du deine Userform aufgebaut hasst.;-)

Gruss
Tino


  

Betrifft: AW: Exit-Ereignis von: Niki
Geschrieben am: 14.11.2007 02:10:24

@Tino sorry dachte beim laden nocht an hochladen, sondern richtig laden:-)

@all
anbei eine abgespeckte Datei die alle wichtigen sachen enthält
https://www.herber.de/bbs/user/47685.xls


  

Betrifft: AW: Exit-Ereignis von: Niki
Geschrieben am: 14.11.2007 00:18:40

führt (egal an welcher stelle des Sub-Codes es steht) zur folgenden Fehlermeldung (kommt anstatt wie vorhin kurz das Userform):
Laufzeitfehler: '-2147467259 (80004005)' nicht näher bezeichneter Fehler.
Aber bei Debuggen wird dann die Zeile mit "hinButton.SetFocus" markeirt. Geht man dann aber mit F8 weiter fängt das Sub von vorne an läuft durch bis zum "End sub" und es kommt dieselbe Fehlermeldung wieder.

Damit funktionert das Sub  nicht einmal mehr dann wenn man mit der Maus klickt.
Das "True" funktioniert hätte mich aber auch gewundert bedeutet es doch, dass das Steuerelemnt denn Focus behält.
VBA-Hilfe:
Cancel Erforderlich. Ereignisstatus. False zeigt an, dass das Steuerelement das Ereignis verarbeiten soll (Voreinstellung). True zeigt an, dass die Anwendung das Ereignis verarbeitet und der Fokus auf dem aktuellen Steuerelement verbleibt.

Auch ein "Cancel=False" funktioniert nicht, dass hatte ich vorhin vergessen zu sagen, dass ich das schon ausprobiert habe.

Trozdem Danke


  

Betrifft: AW: Exit-Ereignis von: Tino
Geschrieben am: 14.11.2007 00:51:05

Hallo,
habe zwar keine lust gehabt deine Userform nachzubauen, aber so gehts.

Dim Dlauf As Boolean
Private Sub PaarBox_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Dlauf = True Then
hinButton.SetFocus
Exit Sub
End If
     
    If PaarBox.ListIndex > 0 Then
        Dlauf = True
        SpielerBox1.Value = PaarBox.List(PaarBox.ListIndex, 1)
        SpielerBox2.Value = PaarBox.List(PaarBox.ListIndex, 2)
        hinButton.SetFocus
    End If
End Sub



Gruss
Tino


  

Betrifft: AW: Exit-Ereignis von: Niki
Geschrieben am: 14.11.2007 02:14:47

Hallo

Funktioniert bei mir leider auch nicht, der Focus landet leider wieder in Spielerbox2. Ich habe nun auch eine abgespeckte Version hochgeladen.

es sind beide exit Varianten drin(meine auskommentiert)

Gruß Niki


  

Betrifft: AW: Exit-Ereignis von: Tino
Geschrieben am: 14.11.2007 02:29:33

Hallo,
Vorschlag: nimm doch dass Click Ereignis, geht auf alle fälle.
https://www.herber.de/bbs/user/47686.xls

Mache jetzt Feierabend, wünsche noch eine Gute Nacht.
Gruss
Tino


  

Betrifft: AW: Exit-Ereignis von: Tino
Geschrieben am: 14.11.2007 10:31:52

Hallo,
neuer Tag neues Glück.

so gehts auch mit dem Exit

https://www.herber.de/bbs/user/47691.xls

Gruss
Tino


  

Betrifft: AW: Exit-Ereignis von: Niki
Geschrieben am: 14.11.2007 23:28:20

Hallo

Tino kannst du mir mitteilen welches Office du verwendest denn bei mir funktoniert es nicht. Ich selber benutzte Office 2003 SP3 Schüler-Studenten-Version.

Gruß Niki


  

Betrifft: AW: Exit-Ereignis von: Tino
Geschrieben am: 14.11.2007 23:42:05

Hallo,
ist ein Notebook von der arbeit.
Kann dir nur sagen es ist Office 2003 Pro.

vielleicht kannt du damit was anfangen!

Gruss
Tino


  

Betrifft: AW: Exit-Ereignis von: Tino
Geschrieben am: 15.11.2007 00:00:15

Hallo,
habe gerate die letzte Datei noch einmal runder geladen, bei geht’s!

Gruss
Tino


  

Betrifft: AW: Exit-Ereignis von: Niki
Geschrieben am: 15.11.2007 00:01:22

ok ich habe eine neuere datei version aber wirklich interresant wäre die Excel info zufinden unter "?->info"


könntest du mir noch mal die clickprozedur geben, sie ist leider nciht mehr auf dem server gewesen heute mittag.

Gruß Niki


  

Betrifft: AW: Exit-Ereignis von: Tino
Geschrieben am: 15.11.2007 00:54:18

Hallo,
hier die Info.
das Click Ereignis war deine ursprünglicher Code, nur in dem Click Ereignis und nicht in dem Exit


Gruss
Tino


  

Betrifft: AW: Exit-Ereignis-Lösung von: Niki
Geschrieben am: 15.11.2007 01:20:36

Hallo Tino

Danke für deine Hilfe.
Ich habe es jetzt anders gelöst, warum es nicht klappte weis ich nicht. Inzwischen habe ich auch herraus gefunden, dass wenn ich den tabindex des hinbuttons auf 1 oder 2 setzte und damit zwischen die Paarbox und die Spielerbox(en) setzte klappt es auch schon mit meinem Exit sub.
Aber die Endgültige lösung ist mit einem Timer.

Dim dtime As Single
Private Sub PaarBox_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
    If PaarBox.ListIndex >= 0 Then 'Team ist hinterlegt
        SpielerBox1.Value = PaarBox.List(PaarBox.ListIndex, 1)
        SpielerBox2.Value = PaarBox.List(PaarBox.ListIndex, 2)
        hinButton.SetFocus
        dtime = Timer
    End If
End Sub
Private Sub SpielerBox2_Enter()
    If ((Timer - dtime) <= 0.05) Then hinButton.SetFocus 'es sind weniger als 0,05 Sekunden  _
vergangen seit die Paarbox den Focus verloren hat und die "if"-Abfrage abgearbeitet wurde
End Sub



Gruß Niki


  

Betrifft: AW: Exit-Ereignis-Lösung von: Tino
Geschrieben am: 15.11.2007 11:52:48

Hallo,
viele Wege führen nach Rom :-)

Gruss
Tino