Condividi tramite

posizionare cursore in textbox3 se errore

Anonimo
2012-06-19T14:43:34+00:00

Utilizzo questo codice:

Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If Not (IsDate(TimeSerial(Val(Left(TextBox3.Text, 2)), Val(Mid(TextBox3.Text, 4, 2)), Val(Right(TextBox3.Text, 2)))) And InStr(3, TextBox3.Text, ":") = 3) Then

MsgBox "Inserire un orario del tipo: 10:30"

TextBox3.SetFocus

End If

End Sub

che all'uscita dalla textbox3 mi controlla se sia stato inserito un orario corretto, il problema che in caso di errore non mi posiziona il cursore nella textbox3, come da istruzione setfocus; dove sbaglio?

Grazie e una buona serata a tutti.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

  1. Anonimo
    2012-06-19T16:52:54+00:00

    Ciao Mauro e grazie dell'interessamento; scusa ma non sono sicuro di aver capito, devo sostituire il mio codice con il tuo o implementarlo con la proprietà "Cancel" ?

     

    Semplicemente utilizzare il parametro Cancel = True al posto di TextBox3.SetFocus.

    SetFocus *non* funziona in Exit. Sei all'interno di Exit, quindi alla fine dell'evento se *fuori* dalla TextBox. Devi *cancellare* la richiesta di uscita in base al verificarsi della condizione che poni in If.

    Il mio esempio era astratto.

    La risposta è stata utile?

    0 commenti Nessun commento

4 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2012-06-19T17:01:03+00:00

    Bene, capito; grazie del suggerimento e una buna serata.

     

    Che sia *buna* anche per te...;-) Grazie per il cortese riscontro e *bun* lavoro... ;-)

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2012-06-19T16:57:51+00:00

    Bene, capito; grazie del suggerimento e una buna serata.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2012-06-19T16:47:32+00:00

    Ciao Mauro e grazie dell'interessamento; scusa ma non sono sicuro di aver capito, devo sostituire il mio codice con il tuo o implementarlo con la proprietà "Cancel" ?

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2012-06-19T15:16:42+00:00

    Utilizzo questo codice:

    Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)

    If Not (IsDate(TimeSerial(Val(Left(TextBox3.Text, 2)), Val(Mid(TextBox3.Text, 4, 2)), Val(Right(TextBox3.Text, 2)))) And InStr(3, TextBox3.Text, ":") = 3) Then

    MsgBox "Inserire un orario del tipo: 10:30"

    TextBox3.SetFocus

    End If

    End Sub

    che all'uscita dalla textbox3 mi controlla se sia stato inserito un orario corretto, il problema che in caso di errore non mi posiziona il cursore nella textbox3, come da istruzione setfocus; dove sbaglio?

    Grazie e una buona serata a tutti.

    Hai il parametro Cancel, utilizzalo!!!

    Esempio dove se non ho una data corretta in TextBox3, tramite Cancel = True annullo l'uscita dalla TextBox:

    Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)

        Dim d As Date

        On Error Resume Next

        d = CDate(Me.TextBox3.Text)

        If Err.Number <> 0 Then

            Cancel = True

        End If

    End Sub

    ;-)

    La risposta è stata utile?

    0 commenti Nessun commento