Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema RefEdit
BildScreenshot zu RefEdit RefEdit-Seite mit Beispielarbeitsmappe aufrufen

RefEdit Feld verlassen - Problem mit SetFocus

Betrifft: RefEdit Feld verlassen - Problem mit SetFocus von: Andreas Hanisch
Geschrieben am: 01.08.2008 11:41:51

Hallo Herber Fans,

ich habe ein wenig mit den Events experimentiert, die im VBA Editor für UserForm Elemente angeboten werden. In diesem Fall für ein RefEdit Feld. Ich möchte nicht erst auf Button Click die Richtigkeit einer RefEdit Selektion prüfen, sondern schon eher und automatisch.
Zwei Dinge kommen in Frage: Change und Exit.


Private Sub RefEdit_Test1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Private Sub RefEdit_Test1_Change()

If Range(RefEdit_Test1.Text).PivotField.Orientation <> xlRowField Then
MsgBox "Startfeld muß ein Feld aus dem Zeilenbereich sein!"
RefEdit_Test1.Value = ""
RefEdit_Test1.SetFocus
Else
debug.print = Range(RefEdit_Test1.Text).PivotField.Position
End If

End Sub


Als ich mit Change gestestet habe, ist mir Excel des Öfteren abgestürzt. Grund unbekannt. Überdies war unvorteilhaft, daß die Messagebox sehr häufig kommt. Auch wenn ich meinen Fehler der falschen Selektion bemerkte und korrigierte. Change ist für die praktische Anwendung in diesem Fall zu empfindlich.
Also ist Exit meine Präferenz als auslösendes Element. Aber: Die SetFocus Anweisung funktioniert nicht korrekt. Wenn auf Exit (Enter drücken) die Prüfung negativ verläuft und die Messagebox kommt, wird der Wert von RefEdit_Test1 wie im Code hinterlegt auf „“ gesetzt, aber der Focus liegt nicht auf diesem RefEdit Feld, sondern auf dem nächsten Feld entsprechend der Aktivierreihenfolge.

Warum greift SetFocus beim Change Event, jedoch nicht bei Exit.
Welchen Befehl kann ich optional noch verwenden, um den Focus nach Fehlerhafter Eingabe wieder auf/ in das RefEdit Feld zu bringen?

Vielen Dank für Eure Ideen.

Grüße, Andreas Hanisch

  

Betrifft: AW: RefEdit Feld verlassen - Problem mit SetFocus von: Lars
Geschrieben am: 01.08.2008 12:57:44

Hi,

prinzipiell; Finger weg vom RefEdit, ist ein einziger Bug. Verwende stattdessen Application.Inputbox
mit Typ 8(Range).

mfg Lars


  

Betrifft: AW: RefEdit Feld verlassen - Problem mit SetFocus von: Andreas Hanisch
Geschrieben am: 01.08.2008 13:01:06

Hallo Lars,

ich habe schon davon gehört, daß das RefEdit nicht ganz optimal ist. Vielleicht deswegen auch die Abstürze beim Change Event. Aber alle RefEdits die ich bisher im Einsatz habe, haben sich bewährt. Ich komme in meiner Entwicklung ja von der application.InputBox, aber diese ist zu reglementiert. Ich habe die RefEdits zumeist im Verbund mit anderen Buttons, Textfeldern, Labels in UserForms.
Ich muß bei RefEdit bleiben.

Dank und Gruß, Andreas


  

Betrifft: AW: RefEdit Feld verlassen - Problem mit SetFocus von: Nepumuk
Geschrieben am: 02.08.2008 09:40:04

Hallo Andreas,

wenn deine Prüfung "FALSCH" ergibt, setzt doch einfach Cancel auf True. Damit bleibt der Cursor im Control.

Gruß
Nepumuk


  

Betrifft: AW: RefEdit Feld verlassen - Problem mit SetFocus von: Andreas Hanisch
Geschrieben am: 05.08.2008 16:08:12

Hallo Nepomuk,

das übersteigt nun doch meine bisherige VBA Erfahrungen. Wo muß ich Cancel auf True setzen.
'Private Sub TxtBox_TDX_Count_Change()': In den Klammern oder unten in der IF Prüfung?

Vielen Dank für eine zusätzlich Erläuterung.

Grüße, Andreas


  

Betrifft: AW: RefEdit Feld verlassen - Problem mit SetFocus von: Nepumuk
Geschrieben am: 06.08.2008 16:40:29

Hallo Andreas,

ich dachte es geht um diese Prozedur:

Private Sub RefEdit_Test1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

Und hier hast du eine Cancel-Variable.

Wieso jetzt auf einmal das: Private Sub TxtBox_TDX_Count_Change() ??????????

Davon war bisher nicht die Rede.

Gruß
Nepumuk


  

Betrifft: AW: RefEdit Feld verlassen - Problem mit SetFocus von: Andreas Hanisch
Geschrieben am: 06.08.2008 17:03:16

Hallo Nepomuk,

Du hast Recht!

Es war ein versehen meinerseits. Ich habe mich in der UserForm vertan. Es geht natürlich um das RefEdit Feld. Entschuldige bitte.

Also müßte die Zeile so aussehen:
Private Sub RefEdit_Test1_Exit(ByVal Cancel As True) (?)


Danke Dir.

Grüße, Andreas


  

Betrifft: AW: RefEdit Feld verlassen - Problem mit SetFocus von: Jens
Geschrieben am: 06.08.2008 17:17:42

Hi,

die Prozedur darf nicht verändert werden:

Private Sub RefEdit_Test1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If Deine Bedingung nicht eintritt Then
Cancel = True
End If

Damit wird Exit verhindert.

mfg Jens


 

Beiträge aus den Excel-Beispielen zum Thema "RefEdit Feld verlassen - Problem mit SetFocus"