Condividi tramite

Usare come separatore un asterisco (*) al posto dello spazio (" ")

Anonimo
2019-10-15T10:49:45+00:00

Buongiorno a voi,

chiedo gentilmente un vostro prezioso aiuto per risolvere questo problema.

Nell'evento AfterUpdate della textbox ho associato un codice che mi rileva il formato data dd/mm/yyyy e se il formato è diverso da quello citato (-,, ecc) mi esce il messaggio "questa non è una data", se invece al posto della data scrivo un valore alfanumerico (domani, ieri, dopodomani ecc) mi colora la textbox di rosso.

Ho notato che se scrivo in questo modo : 15/10/2019 17/10/2019 (data(spazio)data) non mi esce il messaggio e va bene;

diversamente se scrivo così: 15/10/2019*17/10/2019 (data(asterisco)data) mi esce il messaggio "questa non è una data" e non va bene.

Come posso fare in modo che il messaggio non esca se scrivo 15/10/2019*17/10/2019 con l'asterisco?

L'asterisco fa da separatore tra le date.

Questo è il codice che uso e grazie mille in anticipo per ogni aiuto.

Saluti,

Sol39

Private Sub TextBox34_AfterUpdate()
If IsDate(TextBox34.Value) Then
    If TextBox34.Value <> Format(DateValue(TextBox34), "dd/mm/yyyy") Then
        MsgBox "Formato non corretto! Il formato deve essere: dd/mm/yyyy"
    TextBox1.BackColor = vbRed
    End If
Else
    MsgBox "Questa non è una data"
End If
End Sub
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

Anonimo
2019-10-15T16:01:08+00:00

Ciao Sol39,

Scusami, non ho chiarito bene.

La data la inserirò in una textbox, l'ora in un'altra textbox.

Textbox34: 12/10/2019*16/10/2019...

Textbox35: 12:00*15:35..

Praticamente sia data sia ora si trovano in due textbox separate (sempre evento AfterUpdate).

L'ora sarà con i due punti (:). Esempio 12:30 e non 12;00

Grazie ancora.

Sol39

Bene! adesso tutto e' chiaro.

Prova qualcosa del genere:

'=========>>

Private Sub TextBox34_AfterUpdate()

    Dim arrOra As Variant

    Dim vVal As Variant

    Dim i As Long

    Dim bFlag As Boolean

    Me.TextBox34.BackColor = &H80000005

    arrOra = Split(Me.TextBox34.Value, "*")

           For i = LBound(arrOra) To UBound(arrOra)

            vVal = arrOra(i)

            If Not IsDate(vVal) Then

                bFlag = True

                Exit For

            Else

                If vVal <> Format(TimeValue(vVal), "hh:mm") Then

                 MsgBox "Formato non corretto! Il formato deve essere: hh:mm" _

                 & " oppure hh:mm*hh:mm"

                    Me.TextBox34.BackColor = vbRed

                    Exit For

                End If

            End If

        Next i

    If bFlag Then

        MsgBox "Questa non è un'ora"

        Me.TextBox34.BackColor = vbRed

    End If

End Sub

'<<=========

===

Regards,

Norman

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

8 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2019-10-15T14:59:14+00:00

    Praticamente sarebbe lo stesso esempio che ho fatto per le date, ma con l'ora.. 

    Esempio: 12:15*13:30  (ora(asterisco) ora). 

    Grazie mille per la pazienza e disponibilità. 

    Sol39

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2019-10-15T14:50:58+00:00

    Ciao Sol39,

    grazie mille..Funziona benissimo.

    Bene, mi fa piacere. :-)

    Vorrei chiederti una cosa: per la data è ok, per l'ora cosa dovrei cambiare?

    Potresti postare un paio di esempi?

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2019-10-15T14:24:21+00:00

    Caro Norman,

    grazie mille..Funziona benissimo.

    Vorrei chiederti una cosa: per la data è ok, per l'ora cosa dovrei cambiare?

    Grazie mille ancora.

    Sol39

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2019-10-15T12:10:11+00:00

    Ciao Sol39,

    chiedo gentilmente un vostro prezioso aiuto per risolvere questo problema.

    Nell'evento AfterUpdate della textbox ho associato un codice che mi rileva il formato data dd/mm/yyyy e se il formato è diverso da quello citato (-,, ecc) mi esce il messaggio "questa non è una data", se invece al posto della data scrivo un valore alfanumerico (domani, ieri, dopodomani ecc) mi colora la textbox di rosso.

    Ho notato che se scrivo in questo modo : 15/10/2019 17/10/2019 (data(spazio)data) non mi esce il messaggio e va bene;

    diversamente se scrivo così: 15/10/2019*17/10/2019 (data(asterisco)data) mi esce il messaggio "questa non è una data" e non va bene.

    Come posso fare in modo che il messaggio non esca se scrivo 15/10/2019*17/10/2019 con l'asterisco?

    L'asterisco fa da separatore tra le date.

    Questo è il codice che uso e grazie mille in anticipo per ogni aiuto.

    Saluti,

    Sol39

    Private Sub TextBox34_AfterUpdate()
    If IsDate(TextBox34.Value) Then
        If TextBox34.Value <> Format(DateValue(TextBox34), "dd/mm/yyyy") Then
            MsgBox "Formato non corretto! Il formato deve essere: dd/mm/yyyy"
        TextBox1.BackColor = vbRed
        End If
    Else
        MsgBox "Questa non è una data"
    End If
    End Sub
    

    Prova qualcosa del genere:

    '=========>>

    Private Sub TextBox34_AfterUpdate()

        Dim arrDate As Variant

        Dim vVal As Variant

        Dim i As Long

        Dim bFlag As Boolean

        Me.TextBox34.BackColor = &H80000005

        arrDate = Split(Me.TextBox34.Value, "*")

               For i = LBound(arrDate) To UBound(arrDate)

                vVal = arrDate(i)

                If Not IsDate(vVal) Then

                    bFlag = True

                    Exit For

                Else

                    If vVal <> Format(DateValue(vVal), "dd/mm/yyyy") Then

                        MsgBox "Formato non corretto! Il formato deve essere: dd/mm/yyyy"

                        Me.TextBox34.BackColor = vbRed

                        Exit For

                    End If

                End If

            Next i

        If bFlag Then

            MsgBox "Questa non è una data"

            Me.TextBox34.BackColor = vbRed

        End If

    End Sub

    '<<=========

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento