Condividi:        

vba2003: isdate non va ?

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

vba2003: isdate non va ?

Postdi karug64 » 14/12/11 22:01

Salve a tutti.
Questo codice (in parte mutuato da una vecchia discussione presente su questo forum)

Private Sub frm_dadata_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If (Not IsDate(frm_dadata.Value)) Then
frm_dadata.BackColor = RGB(250, 0, 0)
MsgBox ("Errore, data non valida: " & frm_dadata.Value)
frm_dadata.Text = ""
Cancel = True
Else
frm_dadata.BackColor = RGB(0, 250, 0)
End If
End Sub

se in frm_dadata scrivo 14/10/5555 colora di verde il text e non si ferma . Ma che data valida e' 14/10/5555 ?!?!?!
E anche se scrivo 14/10 passa che e' una meraviglia !!!!

In cosa sbaglio ?

E piu' in generale: dove posso trovare una function che controlli l'esattezza dell'emissione di una data e la congruita' logica del "da data a data" (tipo a data non puo' essere minore di da data, ecc ecc) ?

Grazie
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Sponsor
 

Re: vba2003: isdate non va ?

Postdi Anthony47 » 15/12/11 00:06

Gli astrofisici valutano che la vita sulla terra si estinguera' tra 3.5-5.0 miliardi di anni; io credo che l' uomo riuscira' nell' obiettivo mooolto prima; Microsoft si e' tenuta a meta', progettando un sistema di date che arriva fino al 31 dic 9999.
Inoltre, come standard, l' omissione dell' anno indica una data appartennte all' anno corrente.
Quindi i casi che tu presenti sono assolutamente regolari

Un paio di consigli preliminari:
-le tue date provengono (immagino) da textbox, quindi in realta' parliamo di "stringa"; converti quindi la stringa in una data usando una funzione valida, ad es DateValue; tipo
Codice: Seleziona tutto
MyDate=DateValue(TextBox1.Text)

-non accontentarti di colorare in rosso o verde, sostituisci anche il testo digitato con qualcosa di meno equivoco, tipo
Codice: Seleziona tutto
TextBox1.Text = Format(DateValue(TextBox1.Text), "dd-mmm-yyyy")


Una volta ottenute delle date sintatticamente corrette (quindi, parlando di vba, nate da conversione in date di stringhe) userai una struttura di If per determinare se sei all' interno di un range, tipo
Codice: Seleziona tutto
If DataCorr>=ataIniziale and DataCorr<=DataFinale then ...

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

Re: vba2003: isdate non va ?

Postdi karug64 » 15/12/11 20:19

Come sempre ... grazie
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22


Torna a Applicazioni Office Windows


Topic correlati a "vba2003: isdate non va ?":


Chi c’è in linea

Visitano il forum: Ricky0185 e 47 ospiti