Condividi:        

Excel 2007-2010 controllo data

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Excel 2007-2010 controllo data

Postdi deniel69 » 11/03/15 19:02

Buona sera a tutti....

Il mio problema oggi è il seguente.

Ho una userform che uso per gestire n dati e attraverso pulsanti, textbox e altro scrivo, leggo e modifico i vari dati.

Ora ho dei problemi con la gestione delle date, ovvero con mese e giorno.

Con ad esempio "txtG = Format(txtG, "dd/mm/yyyy")" faccio il controllo e forzo il formato.......della casella di testo txtG

ma qualcosa non funziona e non capisco cosa...... aiutooooo.
Avatar utente
deniel69
Utente Senior
 
Post: 131
Iscritto il: 17/04/12 22:43

Sponsor
 

Re: Excel 2007-2010 controllo data

Postdi ricky53 » 11/03/15 21:13

Ciao,
la data nella TextBox l'hai scritta tu manualmente?
Cosa ottieni nella TextBox? (Questa informazione è fondamentale per poterti aiutare)
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Excel 2007-2010 controllo data

Postdi Anthony47 » 11/03/15 23:27

Se hai comperato Excel hai anche ricevuto strumenti smart per l' input delle date, quali il DatePicker.
Quindi butta a mare il TextBox, anzi usalo solo per quello che e' progettato a fare (l' input di testi) e fatti dare la data dal DatePicker: si sceglie sul calendario, non c' e' l'equivoco dei mesi all'italiana o all'americana, la visualizzazione e' gia' fatta.
Se non trovi il DTPicker nella casella degli strumenti allora cercalo in Menu /Strumenti /Controlli aggiuntivi, alla voce "Microsoft Date and Time Picker Control": lo spunti per visualizzarlo nella casella strumenti, poi lo inserisci sulla form invece del textbox dove chiedi la data.
Se vuoi impostarlo alla data odierna nella userform initialize inserirai
Codice: Seleziona tutto
Me.DTPicker1.Value = Int(Now())
Per leggere la data impostata userai qualcosa come
Codice: Seleziona tutto
myData= Userform1.DTPicker1.Value


Quanto al problema che segnali:
Con ad esempio "txtG = Format(txtG, "dd/mm/yyyy")" faccio il controllo e forzo il formato.
Questa istruzione non fa nessun controllo sul dato inputato; quanto a forzare il formato, volendo usare un formato "data" dovresti come minimo controllare che nel textbox ci sia qualcosa convertibile in una data (es tramite la Funzione IsDate) e poi convertirla effettivamente con una istruzione tipo DateValue(TextBoxText) o meglio CDate(TextBoxText)
Questo solo a uso teorico, perche' do' per scontato che vai a usare il DatePicker.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel 2007-2010 controllo data

Postdi deniel69 » 12/03/15 18:34

Ciao Anthony.... il problema è che utilizzando il componente aggiuntivo Microsoft Date and Time Picker Control
così come per il controllo calendario, se sul pc di chi apre il la cartella excel non sono abilitati o installati i componenti aggiuntivi
la form darà errore e andrà in debug.

Le date le inserisco io manualmente oppure con doppio click nella casella di testo, tramite una macro in un modulo di classe
carico in una userform nel frame1 il calendario da cui seleziono le date....... questo per evitare il problema di avere o non avere controlli aggiuntivi installati.

Il controllo IsDate lo faccio solo in fase di inserimento o modifica con.......

Codice: Seleziona tutto
         c.Offset(0, 6).Value = _
           Me.txtG.Text
           txtG = Format(txtG, "dd/mm/yyyy")
'Controllo data
With Me
  If txtG.Value = "" Then
 
  Else
    If Not IsDate(txtG.Value) Or Not txtG.Value = Format(txtG, "dd/mm/yyyy") Then
       
           MsgBox ("Errore data arrivo motore non valida: " & txtG.Value)
           txtG.Text = ""
           c.Offset(0, 6).Value = ""
           End If
      End If
     
       End With



Avevo già affrontato questo problema è non ricordavo che le celle in cui vado a scrivere devono essere formattate come testo
e non come data altrimenti ....il problema dell'inversione dei mesi con i giorni....si presenta .

Problema risolto

Grazie ancora............. alla prossima.
Avatar utente
deniel69
Utente Senior
 
Post: 131
Iscritto il: 17/04/12 22:43


Torna a Applicazioni Office Windows


Topic correlati a "Excel 2007-2010 controllo data":


Chi c’è in linea

Visitano il forum: Nessuno e 80 ospiti