>... ( almeno per voi che ve ne intendete ) ....
Non è proprio cosi
Comunque io farei 3 modifiche :
________________________________________________________
per valutare se un valore è Null in VBA devi fare attenzione
cerco di spiegarmi in modo molto elementare
Tu vedi 2 controlli vuoti e ti sembrano uguali, eppure
- in uno potresti avere un valore Null
( significa che nessuno ha mai scritto nulla li dentro )
- in un'altro potresti avere una stringa di lunghezza 0
( chiamiamola d'ora in poi SL0 )
( Rappresentata con "" )
( significa che c'era scritto qualcosa che è stato cancellato )
La differenza fra i 2 è sostanziale, perche nel primo non sappiamo assolutamente cosa ci sia dentro
mentre nel secondo sappiamo con certezza che non c'è niente
Ora tu vuoi che se il controllo contiene un Null oppure indifferentemente SL0 succeda qualcosa
allora scrivi:
...... If Nz(Me.Voto_01.Value, "") = "" Then ......
Significa che VBA Trasforma il controllo Null in SL0 ( se per caso era gia SL0 non gli fa niente )
e poi valuta se il risultato è SL0
Non so se mi sono spiegato bene ???
_________________________________________________________
Nella if che ci proponi scrivi
If ...... And Not IsNull(Me.Voto_02.Value) And Right(Me.[Voto_02], 3) = "4,0" Then
Desumo che tu vuoi che succeda qualcosa
- Se non è nullo Voto_02
- E se gli ultimi 3 caratteri di Voto_02 sono "4,0"
Ma la seconda condizione implica GIA la prima pertanto anche se non
è strettamente sbagliata puoi omettere la prima e guadagni in semplicita
______________________________________________________
Per ultimo se la condizione if si verifica cosa deve fare VBA ?
tu ci scrivi questo:
Me.[Voto_01].value = "01-4,0" And Me.[Voto_02].value = ""
Ma quelle sono 2 cose distinte che le devi mettere su 2 righe distinte
Me.[Voto_01].value = "01-4,0"
Me.[Voto_02].value = ""
___________________________________________________________
Facci sapere
If Nz(Me.Voto_01.Value, "") = "" And Right(Me.[Voto_02].Value, 3) = "4,0" Then
Me.[Voto_01].Value = "01-4,0"
Me.[Voto_02].Value = ""
End If