Office: Textbox1.Setfocus funktioniert nicht

Helfe beim Thema Textbox1.Setfocus funktioniert nicht in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Leute, ich programmiere hier gerade seit 2 Tagen ein Excel-AddIn für einen Kunden (Excel 2003, SP3). In einem UserForm habe ich eine... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von OfficeUser, 28. Januar 2009.

  1. OfficeUser Neuer User

    Textbox1.Setfocus funktioniert nicht


    Hallo Leute,

    ich programmiere hier gerade seit 2 Tagen ein Excel-AddIn für einen Kunden (Excel 2003, SP3).
    In einem UserForm habe ich eine Datumsauswahl per Textbox txtDatumVon bzw. alternativ per Calendar Control 11.0 Steuerelement.
    Wenn ich über das Steuerelement das Datum an die Textbox übergebe oder ein gültiges Datum in die Textbox eingebe, funktioniert alles wie gewünscht.
    Um zu verhindern, dass Unsinn (z.B. fsdfsdf#*!) oder ein ungültiges Datum eingegeben werden kann, habe ich diese Textbox mit einem Ereignismakro verbunden, das bei Verlassen der Textbox die Gültigkeit prüft.
    Es wird auch einwandfrei erkannt, ob ein gültiges Datum in die Textbox eingegeben wurde oder nicht.
    ABER : Der Cursor springt trotz txtDatumVon.SetFocus nicht wieder in die Textbox *upps

    Kann mir bitte jemand erklären, was ich falsch gemacht habe *rolleyes.gif* ?!?!
    Hier der Code (im UserForm) :

    VBA-Code:
    Private Sub txtDatumVon_AfterUpdate()
        txtDatumVon = Trim(txtDatumVon.Value)
        If Not IsDate(txtDatumVon.Value) And txtDatumVon <> "" Then
            txtDatumVon.SetFocus
            MsgBox "Bitte geben Sie ein gültiges Datum ein !", vbCritical, "Falsche Eingabe"
        End If
    End Sub
    Code eingefügt mit Syntaxhighlighter 4.15
    Alternativ zu txtDatumVon_AfterUpdate() habe ich auch schon txtDatumVon_Exit() ausprobiert - ohne Erfolg !
    Auch die Msgbox und Setfocus habe ich schon getauscht : Kein Erfolg !

    Über eine passende Hilfestellung wäre ich sehr dankbar..
    Ansonsten : Schönes WE an ALLE *mrcool

    :)
     
    OfficeUser, 28. Januar 2009
    #1
  2. Hallo NoNet,

    probiere es mal folgendermaßen. Ich denke, dass Du damit zunächst mal arbeiten kannst.

    Code:
    Wünsche dir auch ein schönes WE.
     
    Sebastian Schulz, 30. Januar 2009
    #2
  3. Hallo NoNet,

    ich bin in der VBA-Hilfe auf die wahrscheinliche Ursache des Problems gestoßen. Aus der VBA-Hilfe für das AfterUpdate-Ereignis:

    Wenn der Benutzer die Eingabe abschließt, indem er auf ein anderes Steuerelement klickt, tritt zunächst das AfterUpdate-Ereignis ein, die Prüfroutine setzt den Fokus zurück auf die Textbox und erst anschließend tritt das Enter-Ereignis des angeklickten anderen Steuerelementes ein. Damit ist wohl nicht nur gemeint, dass eine entsprechende Ereignisroutine angestoßen wird, sondern wohl auch, dass das betreffende Steuerelement anschließend den Fokus wieder an sich reißt.

    Wenn du jetzt jede Menge Steuerelemente auf dem Userformular hast, wäre es natürlich umständlich, bei allen im Enter-Ereignis deine Prüfroutine aufzurufen. Da musst du die Prüfroutine eventuell auf das Terminate- oder das Deactivate-Ereignis des Userformulares legen oder das Ganze sonstwie anders organisieren.

    Gruß Ingolf
     
  4. Textbox1.Setfocus funktioniert nicht

    Grüß dich Sebastian,

    yep, das ist natürlich die Methode der Wahl!

    Gruß Ingolf
     
  5. OfficeUser Neuer User
    Hallo Sebastian, hallo Ingolf,

    vielen Dank für eure Antworten !
    Mit Sebastians Lösungsvorschlag erreiche ich genau das, was ich wollte - vielen Dank dafür ! *Smilie

    Einziger "Schönheitsfehler" : beim Schliessen des UserForms per X erschien ebenfalls die MsgBox wenn die Textbox kein gültiges Datum enthielt. Aber das konnte ich durch eine zusätzliche Variable abfangen - in meinem (jetzt zu Hause *tongue.gif* ) nachgebildeten Userform sieht der Code dann so aus :

    VBA-Code:
    Public blnUFCloseMode As Boolean 'Für Überprüfung der Close-Methode des UF

    Private Sub txtDatumVon_Exit(ByVal Cancel As MSForms.ReturnBoolean)
        txtDatumVon = Trim(txtDatumVon.Value)
        If Not IsDate(txtDatumVon.Value) And txtDatumVon <> "" Then
            'txtDatumVon.SetFocus
            Cancel = True
            If Not blnUFCloseMode Then MsgBox "Bitte geben Sie ein gültiges Datum ein !", vbCritical, "Falsche Eingabe : " & blnUFCloseMode
        End If
    End Sub

    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
        blnUFCloseMode = True
    End Sub
    Code eingefügt mit Syntaxhighlighter 4.15
    Jetzt kann ich das am Montag in mein AddIn einbauen und dieses zu Ende bringen *cool.gif*

    Nochmal ein schönes WE an alle.....
     
    OfficeUser, 30. Januar 2009
    #5
Thema:

Textbox1.Setfocus funktioniert nicht

Die Seite wird geladen...
  1. Textbox1.Setfocus funktioniert nicht - Similar Threads - Textbox1 Setfocus funktioniert

  2. TextBox1 wieder Focus setzen

    in Microsoft Excel Hilfe
    TextBox1 wieder Focus setzen: Hallo liebe Community. Ich hab folgendes kleines Problem. Meine VBA Excel Programmierung ist fast zu 100% fertig fehlt nur noch ein kleines Problem. Folgendes: Ich habe eine Userform...
  3. SetFocus fokussiert nicht

    in Microsoft Access Hilfe
    SetFocus fokussiert nicht: Hallo, ich rufe nach der Eingabe eines Wertes in einem Formular über das AfterUpdate Event folgende Prozedur auf: Code: Sub OoR(frm As Form, field As Control) 'Prüfen ob Wert Out of Range Dim max...
  4. SetFocus geht nicht

    in Microsoft Access Hilfe
    SetFocus geht nicht: Hallo @ll, noch im alten Jahr stehe ich wieder mal auf dem Schlauch :-( Ich habe ein Formular und möchte mir einen Bericht anzeigen, dies klappt ja einwandfrei, aber wenn der Bericht geschlossen...
  5. .SetFocus funktioniert nicht

    in Microsoft Access Hilfe
    .SetFocus funktioniert nicht: Aus irgendeinem - mir nicht erfindlichen - Grund funktioniert plötzlich das Setzen des Fokus auf ein ungebundenes Textfeld in einem Formularfuß nicht mehr. Ich setze diesen Befehl im Lost_Focus...
  6. SetFocus wieder auf das gleiche Feld

    in Microsoft Access Hilfe
    SetFocus wieder auf das gleiche Feld: So, alles probieren und die Forensuche hat nix geholfen. Bevor ich nun an diesem an sich banalen Problem verzweifle, frage ich lieber mal hier: Ändert der Anwender in einem Formular den Wert...
  7. Tabelle speichern unter Namen von TextBox1

    in Microsoft Excel Hilfe
    Tabelle speichern unter Namen von TextBox1: Hallo Zusammen, ich brauche eure Hilfe. Erstmal, es ist Excel 2003. Hier der Code Sub Email_an_ADM_senden() Dim MyMessage As Object, MyOutApp As Object Dim SavePath As String...
  8. TextBox1 Überprufen

    in Microsoft Excel Hilfe
    TextBox1 Überprufen: Hallo ich Habe eine Frage gibt Moglichkeit in VBA TextBox1 Überprufen nach TabelleBlattename? ersoll nach eingabe ins Textbox Prufen Ob die TabelleBlattname Existiert wenn Ja dann...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden