Home › Forum › Domande su Excel VBA e MACRO › [RISOLTO] Inserimento separatore durante la digitazione della data
Taggato: Data TextBox
-
AutorePost
-
-
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.
-
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
-
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-
<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.
-
-
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 -
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.
-
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 -
Ciao
Il codice così proposto va benissimo per le mie esigenze. Direi che possiamo dichiarare risolto il problema.
Grazie di nuovo e alla prossima.
-
-
AutorePost
- Devi essere connesso per rispondere a questo topic.