You are here:Home-Domande su Excel VBA e MACRO-[RISOLTO] Inserimento separatore durante la digitazione della data
[RISOLTO] Inserimento separatore durante la digitazione della data2020-05-23T09:10:56+02:00

Home Forum Domande su Excel VBA e MACRO [RISOLTO] Inserimento separatore durante la digitazione della data

Taggato: 

Visualizzazione 6 filoni di risposte
  • Autore
    Post
    • AvatarMisterExcel
      Partecipante
        Post totali: 37

        Buongiorno

        Avrei bisogno di un aiuto per creare un codice per una textbox.

        In pratica, devo inserire una data nella textbox usando obbligatoriamente 8 cifre.

        Ad esempio volendo inserire la data odierna, devo digitare 22052020.

        L’aiuto che vorrei è, se possibile, che, dopo aver digitato le prime due cifre, cioè 22, il codice mi inserisca automaticamente il separatore “/”. La stessa cosa dopo aver inserito le successive due cifre, cioè 05.

        Spero di essere stato chiaro nell’esposizione del problema.

        Grazie in anticipo per l’aiuto.

      • AvatarMisterExcel
        Partecipante
          Post totali: 37

          Scusate.

          Avevo dimenticato di dire che una volta lasciato il focus della textbox, questa mi dovrà visualizzare la data nel

          formato 22/05/2020

          Grazie

        • BySalvBySalv
          Amministratore del forum
            Post totali: 783

            Ciao il textbox è in una userform?, mi serve il nome del textbox, Textbox1-2-3-etc..

            Ciao By sal (8-D

            Ciao By Sal (8-)
            se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

            • AvatarMisterExcel
              Partecipante
                Post totali: 37

                <p style=”text-align: center;”>Ciao By Sal.</p>
                Pensavo non fosse necessario.

                Supponiamo che la Userform si chiami form1 e la Textbox si chiami textbox1.

                Grazie.

            • BySalvBySalv
              Amministratore del forum
                Post totali: 783

                Ciao MisterExcel ecco una soluzione:

                Private Sub TextBox1_Change()
                
                Select Case Len(TextBox1)
                    Case 2: TextBox1 = TextBox1 & "/"
                    Case 5: TextBox1 = TextBox1 & "/"
                End Select
                End Sub

                anche se non è funzionale, in quanto non fa un controllo della data, nel senso che se tu vorrest scrivere

                1/5/2020

                il textbox non controlla se tu hai inserito 1 e non 01 come pure i mesi ad 1 cifra prima del 10.

                nella data sopra scriverebbe 15/20/20 stravolgendo tutta la data.

                a questo punto occorre un controllo completo dell’inserimento di una data, ma comunque ci sarebbero sempre interpretazioni errate, esempio 222020 che in pratica sarebbe 02/02/2020 però potrebbe anche essere 22/02/020.

                il metodo più sicuro sarebbe un DTPicker cioè un calendario per scegliere la data, oppure tagliando la testa al toro far scrivere in automatico la data odierna del tipo

                textbox1 = Date

                e nel caso aggiustarla se sia diversa.

                al limite massimo inserire il “.” punto per la separazione che verrà trasformato in “/” ed in ultimo convertito in 00/00/0000

                fai sapere cosa intendi fare, Ciao By Sal (8-D

                Ciao By Sal (8-)
                se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

              • AvatarMisterExcel
                Partecipante
                  Post totali: 37

                  Grazie per la dritta By Sal.

                  Come detto all’inizio del post, la condizione è che vengano digitate sempre 8 cifre. Quindi, il giorno 5 dovrà essere digitato 05, come pure il mese di maggio dovrà essere digitato 05, e l’anno 2020. Per il resto , so già come impostare il codice.  A me interessa sapere come inserire automaticamente il separatore senza doverlo digitare.

                  Grazie ancora per quello che puoi fare.

                • BySalvBySalv
                  Amministratore del forum
                    Post totali: 783

                    Ciao se sono sempre 8 cifre allora la prima macro proposta va bene in quanto quando inserisci la seconda cifra del giorno in automatico ti mette il separatore come pure alla seconda cifra del mese.

                    hai fatto la prova?

                    però ti ho detto le mie perplessità

                    comunque tanto per un controllo modifica il tutto con questo

                    Option Explicit
                    Private Num
                    
                    Private Sub TextBox1_Change()
                    Num = Num + 1
                    Select Case Len(TextBox1)
                        Case 2: TextBox1 = TextBox1 & "/"
                        Case 5: TextBox1 = TextBox1 & "/"
                    End Select
                    End Sub
                    
                    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
                    If Num <> 10 Then
                        MsgBox "Data non compatibile", vbInformation, "Controllo data"
                        TextBox1 = ""
                        Num = 0
                    Else
                        Num = 0
                    End If
                    End Sub

                    mi raccomando di inserire anche “Private Num” sotto “Option explicit”

                    in definitiva è un controllo che controlla se all’uscita dal “TextBox1” la data contiene 10 caratteri compresi i separatori se ha un valore diverso in più o meno ti avvisa con un messaggio e cancella la data inserita errata.

                    di più non posso fare.

                    Ciao By Sal (8-D

                    Ciao By Sal (8-)
                    se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

                  • AvatarMisterExcel
                    Partecipante
                      Post totali: 37

                      Ciao

                      Il codice così proposto va benissimo per le mie esigenze. Direi che possiamo dichiarare risolto il problema.

                      Grazie di nuovo e alla prossima.

                  Visualizzazione 6 filoni di risposte
                  • Devi essere connesso per rispondere a questo topic.