Corso VBA Excel ITA - 84 - Progetto gestionale - Iniziamo la validazione dei campi

  Рет қаралды 3,434

NickTheGeek

NickTheGeek

Күн бұрын

Пікірлер: 24
@Sancaru72
@Sancaru72 4 жыл бұрын
Ciao Nick! Mi piace molto l'istruzione like, personalmente non l'ho mai utilizzata ma mi sto rendendo conto di aver sbagliato ;) Per quanto riguarda l'inversione giorno/mese l'ho risolta inserendo prima dell'istruzione IF la seguente riga: Me.txtDataNascita.Value = Format(Me.txtDataNascita.Value, "DD/MM/YYYY") e lasciando nella seconda riga solo il controllo IsDate: If Not IsDate(Me.txtDataNascita.Value) Then ... Al prossimo video!
@NickTheGeek
@NickTheGeek 4 жыл бұрын
Ciao Sandro, grazie per il suggerimento, così sembra funzionare correttamente in modo molto più semplice di quello che ho fatto io, anzi ho visto che se metti un mese >12 allora inverte automaticamente giorno e mese. Mi sembra ottimo!
@filippo61
@filippo61 4 жыл бұрын
Esplicito come in ogni lezione. Avevo notato lo stesso problema di Maurizio ed ho verificato che il CDate funziona. :)
@NickTheGeek
@NickTheGeek 4 жыл бұрын
Ottimo :)
@droitaucoeur1
@droitaucoeur1 3 жыл бұрын
Ciao Nicola. Potevi utilizzare le funzioni Day - Month e Year per la verifica. If Day(txtbox) > 31 or Month(xxxxx) > 12 or Year(xxxxx) > Year(Date) Then.
@NickTheGeek
@NickTheGeek 3 жыл бұрын
Ciao Jacky, grazie.
@postalucia
@postalucia 2 жыл бұрын
Ciao Nick, Chiaro e con tutte le possibilità che possiamo incontrare! Mi piacerebbe mettere la data (la data di un movimento bancario, per esempio) come in excel: dd/m/yy oppure dd/m e un codice la sistema con precisione dd/mm/yy. è possibile? grazie!
@NickTheGeek
@NickTheGeek 2 жыл бұрын
Ciao Lucia, puoi provare con l'evento Exit e la funzione Format, inserendo come secondo parametro il formato che ti interessa: Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) TextBox1.Value = Format(TextBox1.Value, "dd/mm/yy") End Sub
@postalucia
@postalucia 2 жыл бұрын
@@NickTheGeek 🧡 fatto, riuscito! grazie!
@albertogreco6409
@albertogreco6409 3 жыл бұрын
Ciao Nick, ad esempio quando scrivi il CAP e non é di 5 cifre ti avvisa con un msgbox dell'errore .Dando l' OK il cursore dovrebbe tornare sulla TXTCAP , io ho provato con il setfocus ,ma prosegue con il campo successivo.
@NickTheGeek
@NickTheGeek 3 жыл бұрын
Ciao Alberto, il setfocus non l'ho mai usato proprio perché in effetti va sempre al controllo successivo.
@ThePero3067
@ThePero3067 3 жыл бұрын
Ciao Nick, al minuto 25 chiedi aiuto per la convalida della data di nascita. Secondo il mio parere da principiante non dovevi aggiungere niente,hai giá inserito il controllo che dichiara che il dato deve essere DATA.Cosi é impossibile inserire una combinazione di numeri che non sia una data senza far apparire la msgbox di errore. Complimenti ottime spiegazioni.
@NickTheGeek
@NickTheGeek 3 жыл бұрын
Ciao, grazie per i complimenti. Non mi ricordo più quale fosse il problema, probabilmente era possibile scrivere qualcosa del tipo "01/13/2021", che normalmente sarebbe sbagliato, ma a quel punto sarebbe stato considerato automaticamente come 13 gennaio 2021. Un ottimo suggerimento (formattare il campo con "DD/MM/YYYY") mi è stato dato da Sandro D'Andrea in un commento sotto a questo stesso video, prova a darci un'occhiata.
@sergio_molinari
@sergio_molinari 4 жыл бұрын
Molto bravo Nick, ma se non creo un loop sulla textbox alla pressione del tasto "Conferma" mi permette di registrare comunque il dato errato, posso creare un loop magari con setfocus?
@NickTheGeek
@NickTheGeek 4 жыл бұрын
Ciao Sergio, grazie. Sì hai ragione, bisognerebbe controllare in loop la casella altrimenti verrebbe comunque scritto in archivio un dato sbagliato. In realtà la validazione di questa userform andrà avanti per qualche altro video, e nella versione finale questo tipo di verifica ("resti nella userform finché il dato non è corretto") la farò fare al tasto Conferma. Mi sembra di aver provato il SetFocus in caso di errore, e credo ci fosse qualche problema, del tipo che comunque il focus passava al controllo successivo.
@mircoastolfi3209
@mircoastolfi3209 4 жыл бұрын
Ciao, per quanto riguarda la convalida della data, avevi pensato di dividere la text box in tre parti separate (gg, mm, aaaa) e magari far apparire un menu a tendina (sempre sia possibile farlo)? Comunque ottimo come sempre.
@NickTheGeek
@NickTheGeek 4 жыл бұрын
Ciao Mirco, grazie. No, non avevo pensato a questa possibilità; le soluzioni potrebbero essere almeno due: 1) per blindare completamente l'operatività e quindi evitare del tutto la validazione, il numero di giorni presenti nel relativo menu a tendina dovrebbe basarsi sulla combinazione di mese/anno, però significa far scegliere prima mese/anno, e poi il giorno, e questo andrebbe contro logica (almeno europea) 2) volendo far scegliere invece prima il giorno, per evitare incongruenze occorrerebbe comunque un minimo di validazione, che però immagino sarebbe più snella rispetto a quella attuale. Grazie per il suggerimento, lo metto in lista per parlarne al termine della playlist.
@ms888
@ms888 3 жыл бұрын
Bellissimo argomento. Complimenti. Ho solo un problema quando trasferisco la data in una cella, settata come data italiana, mi appare nella maniera inglese. (mmggaaaa). E stranamente succede fino al giorno 12. Se inserisco per es 13/10/2921 funziona bene.
@NickTheGeek
@NickTheGeek 3 жыл бұрын
Grazie Mario. La gestione delle date è uno dei principali problemi in Excel e VBA; probabilmente fino al giorno 12 Excel "si confonde" perché non sa se il 12 è il giorno oppure il mese, e nell''incertezza sceglie la seconda; dal 13 in poi, invece, non ci possono essere dubbi e quindi scrive la data correttamente; le soluzioni possono essere diverse, in base a com'è il tuo foglio e a quale ritieni più opportuna: 1) Se sai che in una specifica cella del foglio ci sarà sempre una data, puoi preformattare la cella come data direttamente da Excel (senza usare VBA), ma da quello che mi scrivi immagino che tu l'abbia già fatto oppure 2) In VBA puoi convertire in data usando la funzione CDate; ad esempio se la cella in cui scrivere è la A1 e prendi la data dalla casella di testo txtData, allora: Cells(1, 1) = CDate(txtData.Value) oppure 3) puoi usare la funzione Format: Cells(1, 1) = Format(txtData.Value, "dd/mm/yyyy") oppure 4) puoi usare la proprietà NumberFormat, ma in questo caso ti servono due linee di codice, una per scrivere il dato e un'altra per formattare: Cells(1, 1) = txtData.Value Cells(1, 1).NumberFormat = "dd/mm/yyyy" Non è detto che tutte funzionino, devi fare delle prove.
@ms888
@ms888 3 жыл бұрын
@@NickTheGeek Il problema è risolto usando la funzione CDate. Grazie ancora per tutto. Ad Maiora !!!
@mauriziobertagna3095
@mauriziobertagna3095 4 жыл бұрын
Complimenti per la chiarezza nell'esposizione. Ho però un problemino: se nella txtDataDiNascita metto una data futura mi da' correttamente l'errore, ma quando rimetto una data corretta continua a darmi il messaggio di errore! Questo il codice che ho scritto: If Not txtDataNascita.Value Like "##/##/####" Or Not IsDate(txtDataNascita.Value) Or Left(txtDataNascita.Value, 2) > 31 Or Mid(txtDataNascita.Value, 4, 2) > 12 Then MsgBox "La data deve essere inserita nel formato gg/mm/aaaa" ElseIf txtDataNascita.Value > Date Then MsgBox "La data di nascita non può essere una data futura" End If Ho commesso qualche errore? Ciao e grazie per la disponibilità
@NickTheGeek
@NickTheGeek 4 жыл бұрын
Ciao Maurizio, grazie per i complimenti. Per quanto riguarda l'errore, potrebbero esserci più motivi, intanto prova a modificare l'istruzione: ElseIf txtDataNascita.Value > Date Then così: ElseIf CDate(txtDataNascita.Value) > Date Then cioè convertendo in formato data il valore della casella di testo. Mi accorgerò di questo errore per puro caso nel prossimo video, e per il momento lo sistemerò così; in ogni caso la validazione di questa userform andrà avanti ancora per qualche video, e la versione finale spero che sia blindata da questo punto di vista, ma più prove fate anche voi e meglio è per capire cosa mi è sfuggito.
@mauriziobertagna3095
@mauriziobertagna3095 4 жыл бұрын
@@NickTheGeek grazie Nick, con la modifica proposta funziona bene! Grazie! Aspetto il prossimo video con interesse. Ciao.
@NickTheGeek
@NickTheGeek 4 жыл бұрын
Perfetto, grazie per il riscontro.
Гениальное изобретение из обычного стаканчика!
00:31
Лютая физика | Олимпиадная физика
Рет қаралды 4,8 МЛН
Cat mode and a glass of water #family #humor #fun
00:22
Kotiki_Z
Рет қаралды 42 МЛН
Quilt Challenge, No Skills, Just Luck#Funnyfamily #Partygames #Funny
00:32
Family Games Media
Рет қаралды 55 МЛН
Corso VBA Excel ITA - 86 - Progetto gestionale - Tasto conferma
26:31
Stop manual work in Excel with this blueprint.
11:13
Excel Off The Grid
Рет қаралды 26 М.
American was shocked by 7 Slavic countries word differences!!
15:29
World Friends
Рет қаралды 1,2 МЛН
How Diplomats Learn Languages Fast | Easy German 585
18:07
Easy German
Рет қаралды 396 М.
10 Excel Formulas That Will Set You Apart (+Cheat Sheet)
18:04
MyOnlineTrainingHub
Рет қаралды 387 М.
Corso VBA Excel ITA - 63 - Userform e controlli (combobox parte 1)
13:52
Гениальное изобретение из обычного стаканчика!
00:31
Лютая физика | Олимпиадная физика
Рет қаралды 4,8 МЛН