Anzeige
Archiv - Navigation
1452to1456
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

SetFocus schlägt fehl

SetFocus schlägt fehl
29.10.2015 10:51:12
PQuest:-)
Hallo,
ich nutze in eiunem userform eine Combobox. Trage ich dort einen Wert ein, wird überprüft, ob er existiert. Wenn ja, dannn erscheint eine Meldung.
Wird diese mit Ja beantwortet, soll das Formular mit den entsprechenden Daten aus einer Tabelle befüllt werden.
Bei Nein soll die Combobox geleert werden UND den Focus erhalten. Hier genau liegt das Problem. Der Focus landet immer auf dem nächsten Feld in der Reihenfolge.
Eine weitere Kuriosität ist die, dass, seit ich diese Sub eingefügt habe, Excel ab und zu abstürzt.
Private Sub cbPatID_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Checking for duplicates
Dim rngPatID
Dim ws As Worksheet
Dim LoPCol As Long, LoPRow As Long, LoPLastRow As Long
Set ws = Worksheets("ListOfPatients")
With ws
LoPCol = 1
LoPRow = 8
LoPLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rngPatID = .Range(.Cells(LoPRow, LoPCol), .Cells(LoPLastRow, LoPCol)).Find(cbPatID.Text) _
If Not rngPatID Is Nothing Then
If MsgBox("This Patient ID already exist! Do you want to edit this patients data?",  _
vbYesNo) = vbYes Then
'Formular mit Werten öffnen
Else
Me.Controls("cbPatID").Text = vbNullString
Me.Controls("cbPatID").SetFocus
End If
End If
End With
End Sub

Mit Bitte um Unterstützung,
PQuest:-)

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SetFocus schlägt fehl
29.10.2015 11:07:35
Daniel
Hi
solange das Makro cbPatID_Exit läuft, hat das Steuerelement cbPatID noch den Focus.
der Focus wechselt erst nach dem Exit-Eventmakro.
wenn du erreichen willst, dass der Focus auf diesem Steuerelement bleibt, dann stetze einfach die Variable Cancel = True
in allen Eventmakros, vor dem auslösenden Event ausgeführt werden, gibt es diese Cancel-Variable.
Wird diese auf TRUE gesetzt, wird das auslösende Event dann doch nicht ausgeführt.
und noch ne Frage so nebenbei:
warum Me.Controls("cbPatID").Text = vbNullString
wenn das Objekt das du bearbeiten willst, fix ist, dann kannst du es auch direkt ansprechen:
cbPatID.Text = vbNullString
dann kannst du auch die IntelliSense zum Eingeben des Objektnames nutzen und vermeidest so tipfehler.
Gruß Daniel

Anzeige
AW: SetFocus schlägt fehl
29.10.2015 13:40:42
PQuest:-)
Hmmm...irgendwas muss ich wohl grundsätzlich etwas falsch machen. Der Focus landet im Nirvana, soll heissen kein Object auf dem Userform wird angewählt.
Zusätzlich taucht die MsgBox nun auf, nachdem ich einen neuen Datensatz eingegeben habe.
Ich scheine echt zu blöd zu sein.
Das sind meine Änderungen:
Private Sub cbPatID_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Checking for duplicates
Dim rngPatID
Dim ws As Worksheet
Dim LoPCol As Long, LoPRow As Long, LoPLastRow As Long
'Application.EnableEvents = False
Set ws = Worksheets("ListOfPatients")
With ws
LoPCol = 1
LoPRow = 8
LoPLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rngPatID = .Range(.Cells(LoPRow, LoPCol), .Cells(LoPLastRow, LoPCol)).Find(cbPatID.Text) _
If Not rngPatID Is Nothing Then
If MsgBox("This Patient ID already exist! Do you want to edit this patients data?",  _
vbYesNo) = vbYes Then
'                If cbpatid.ListIndex >= 0 Then
'               Row = cbpatid.ListIndex + 2 'Formular mit Werten öffnen
Cancel = True
Else
Me.Controls("cbPatID").Text = vbNullString
cbPatID.SetFocus
End If
End If
End With
'Application.EnableEvents = True
End Sub
Ich habe den Eindruck, dass der Cancel=true nicht greift. Stattdessen wird wohl das Userform in der Vordergrund geholt und die Msgbox bleibt im Hintergrund geöffnet. Aber auch hilfloses ausprobieren mit dem Cancel True an anderen Stellen und Application.Enable helfen nichts. Muss wohl daran liegen, dass ich es noch nicht verstanden habe.

Anzeige
AW: SetFocus schlägt fehl
29.10.2015 14:05:43
Rudi
Hallo,
        If Not rngPatID Is Nothing Then
If MsgBox("This Patient ID already exist! Do you want to edit this patients data?",  _
_
vbYesNo) = vbYes Then
'                If cbpatid.ListIndex >= 0 Then
'               Row = cbpatid.ListIndex + 2 'Formular mit Werten öffnen
Else
Cancel = True
cbPatID = ""
End If
End If
Gruß
Rudi

AW: SetFocus schlägt fehl
29.10.2015 14:25:33
PQuest:-)
Keinerlei Änderung im Verhalten :-(

AW: SetFocus schlägt fehl
29.10.2015 15:05:29
Rudi
Hallo,
in meiner Datei klappt es.
Aber Nachbauten weichen i.d.R. erheblich vom Original ab. Außerdem mache ich vermutlich alles richtig. Und wenn man alles richtig macht dann klappt es auch. ;-)
Gruß
Rudi

Anzeige
AW: SetFocus schlägt fehl
29.10.2015 15:25:55
PQuest:-)
Mir schwant da gerade was...
Nepumuk war so nett und hat mir für meine Textboxen eine Klasse erstellt. Wird das der Grund für alles Übel sein?

AW: SetFocus schlägt fehl
29.10.2015 16:11:35
Rudi
Hallo,
diesen Programmteil betreffend funktioniert's doch:
    If Not rngPatID Is Nothing Then
If MsgBox("This Patient ID already exist! Do you want to edit this patients data?",  _
vbYesNo) = vbYes Then
'                If cbpatid.ListIndex >= 0 Then
'               Row = cbpatid.ListIndex + 2 'Formular mit Werten öffnen
Else
Cancel = True
cbPatID = ""
End If
End If

Patient vorhanden-> Abrage 'bearbeiten?'
ja: nix passiert, da nicht programmiert.
nein: Combobox leere und Abbruch; Focus bleibt auf Combobox.
Was ist dein Problem?
Gruß
Rudi

Anzeige
AW: SetFocus schlägt fehl
29.10.2015 16:33:20
PQuest:-)
Ok...habe ich mich da wohl falsch ausgedrückt? Ich möchte den Cursor in der Combobox haben um direkt einen neuen Wert eintippen zu können.

AW: SetFocus schlägt fehl
29.10.2015 17:03:40
Rudi
Hallo,
setz die ShowModal-Eigenschaft der UF auf True.
Gruß
Rudi

AW: SetFocus schlägt fehl
29.10.2015 17:31:55
PQuest:-)
Nicht wirklich jetzt...Also wenn es etwas gbt, was ich jetzt sicher nicht mehr vergesse, so ist das diese Eigenschaft.
Danke!

AW: SetFocus schlägt fehl
29.10.2015 17:19:33
Rudi
Hallo,
ganz unelegant:
            Cancel = True
cbPatID = ""
Application.SendKeys "{tab}+{tab}"
Gruß
Rudi

AW: SetFocus schlägt fehl
29.10.2015 17:40:07
PQuest:-)
Hast du dir meinen Code angesehen...sieht der aus, als würde ich nach Eleganz streben? So weit bin ich noch nicht. Im Moment ist das Ergebnis und nicht der Weg das Ziel ;-)
Danke.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige