Newsgroup: it.comp.appl.access
Titolo: impedire che access si chiuta per txtbox incomplete

Ho un piccolo quesito da esporvi:
Ho un database che viene utilizzato da piu' utenti, molti di questi hanno in 
vizio di lasciare alcuni campi incompleti seppur importati.
Dunque, in VBA, ho fatto in modo che la compilazione dei campi fosse 
obbligatoria e in piu' ho inserito codice sotto l'evento Unload per fare in 
modo che l'applicazione non si chiuda se i campi on sono compilato.
E' proprio sull'evento Unload che non riesco a capire una cosa strana:
se provo a non compilare i campi ed a chiudere l'applicazione dalla X in 
alto a destra, l'applicazione mostra un messaggio e non si chiude; cosi pure 
per il menu file>esci e file>chiudi; invece se si preme il pulsante esci 
creato sulla mascheda il messaggio che avvisa dei campi incompleti esce, 
pero' doo aver premuto OK sulla msgbox l'applicazione si chiude comnque. 
Come mai succede questo? è possibile intercettare l'avento e fermarlo?
Grazie 

 ha scritto nel messaggio 
news:YlGIh.18871$zG1.2...@twister2.libero.it...

dimenticavo questo è il codice che ho inserito sotto l'evento form_unload:
Private Sub form_unload(Cancel As Integer)
Const Errori As String = "Il Form non è stato correttamente compilato" & 
vbCrLf & ";Le operazioni eseguite su un nuovo record non sono state salvate 
e/o annullate" & vbCrLf & ";Sono state effettuate delle modifiche su un 
record esistente che non sono state " & vbCr & "                salvate e/o 
annullate"
    Dim Errore() As String, Messaggio As String
    Dim I As Integer
    'Divide i nomi utilizzando lo spazio come delimitatore.
    Errore = Split(Errori, ";")
     For I = 0 To UBound(Errore)
        Messaggio = Messaggio & "Errore " & I + 1 & ": " & Errore(I) & 
vbCrLf
    Next I
If CasellaControllo83 = False Then
Cancel = True
Beep
FormattedMsgBox "Non è possibile chiudere il Form." & vbCrLf & "" & vbCrLf & 
"Possibili Errori:" & vbCrLf & vbCrLf & Messaggio, vbCritical
'MsgBox "Compilare correttamente tutti i Campi, oppure annullare 
l'operazione in corso ", vbCritical, "ERRORE"
End If
End Sub
Grazie ancora 

 Grazie ancora
Guarda, toglimi uno sfizio....
Invece di utilizzare
If CasellaControllo83 = False Then
Prova a memorizzarti l'OK ad uscire (perchè è a questo che ti serve la casella 83 vero?) su 
variabile dichiarata a livello di modulo invece che su CasellaControllo83.
Del tipo
------------------------
Option Compare....
Option Explicit
Private OkExit as boolean
---------------------
Private Sub Form_Open
    OkExit=False
End Sub
----------------------
Private Sub Form_Unload......
If not OkExit then
    Cancel=True
.....
...
End Sub
----------------
Mi è già successo che durante l'esecuzione da codice, soprattutto negli istanti di chiusura, 
riferimenti ai valori di campi calcolati sparissero nel nulla generando comportamenti 
inspiegbili.........
Non vorrei fosse qualcosa del genere anche per il tuo controllo non asociato.
Mi ricordo che ci ho messo 2 giorni a risolvere il problema, e lo risolsi con una variabile a 
livello di modulo, ossia memorizzando prima delle operazioni importanti il valore che mi serviva per 
poi averlo sicuro e disponibile.
Ma forse per i controlli calcolati è diverso.....  Non sarà mica un controlo calcolato la tua 
Casella83?
Michele

 ha scritto nel messaggio 
news:45f3e872$0$17940$4faf...@reader1.news.tin.it...

Pultroppo non so cosa intendi per "controllo calcolato", pero' se vuol dire 
che il valore della CasellaControllo83 viene impostato automaticamente solo 
se altri controlli hanno riscontro positivo allora si.
il codice del modulo che si occupa di controllare che tutti i valori sia in 
ordine prima di assegnare il valore pe rla chiusura a casellacontrollo83 è 
il seguente:
Function CONTROLLA()
'On Error Resume Next
If (Forms!mProvvGuida.NrProt.Value) = "" Or 
IsNull(Forms!mProvvGuida.NrProt.Value) Then
   MsgBox "il campo NrProt è obbligatorio", vbCritical, "Controllo Numero di 
Protocollo"
   If vbOK = vbOK Then Forms!mProvvGuida.Comando48.Enabled = False
   If vbOK = vbOK Then Cancel = True
   Forms!mProvvGuida.NrProt.SetFocus
   Forms!mProvvGuida.NrProt.BackColor = RGB(250, 0, 0)
   Forms!mProvvGuida.AllowEdits = True
   Forms!mProvvGuida.CasellaControllo83.Value = False
   Exit Function
Else
   Forms!mProvvGuida.NrProt.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvGuida.Cognome.Value) = "" Or 
IsNull(Forms!mProvvGuida.Cognome.Value) Then
   MsgBox "Il Cognome è obbligatorio", vbCritical, "Controllo Cognome"
   If vbOK = vbOK Then Forms!mProvvGuida.Comando48.Enabled = False
   If vbOK = vbOK Then Cancel = True
   Forms!mProvvGuida.Cognome.SetFocus
   Forms!mProvvGuida.Cognome.BackColor = RGB(255, 0, 0)
   Forms!mProvvGuida.AllowEdits = True
   Forms!mProvvGuida.CasellaControllo83.Value = False
   Exit Function
Else
   Forms!mProvvGuida.Cognome.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvGuida.Nome.Value) = "" Or 
IsNull(Forms!mProvvGuida.Nome.Value) Then
   MsgBox "Il Nome è obbligatorio", vbCritical, "Controllo Nome"
   If vbOK = vbOK Then Forms!mProvvGuida.Comando48.Enabled = False
   If vbOK = vbOK Then Cancel = True
   Forms!mProvvGuida.Nome.SetFocus
   Forms!mProvvGuida.Nome.BackColor = RGB(255, 0, 0)
   Forms!mProvvGuida.AllowEdits = True
   Forms!mProvvGuida.CasellaControllo83.Value = False
   Exit Function
Else
   Forms!mProvvGuida.Nome.BackColor = RGB(300, 300, 350)
End If
'If (Forms!mProvvGuida.NatoA.Value) = "" Or 
IsNull(Forms!mProvvGuida.NatoA.Value) Then
'   MsgBox "Il Luogo di Nascita è obbligatorio", vbCritical, "Controllo 
Luogo di Nasciata"
'   If vbOK = vbOK Then Forms!mProvvGuida.Comando48.Enabled = False
'   If vbOK = vbOK Then Cancel = True
'   Forms!mProvvGuida.NatoA.SetFocus
'   Forms!mProvvGuida.NatoA.BackColor = RGB(255, 0, 0)
'   Forms!mProvvGuida.AllowEdits = True
'   Exit Function
'Else
'   Forms!mProvvGuida.NatoA.BackColor = RGB(300, 300, 350)
'End If
'If (Forms!mProvvGuida.Prov.Value) = "" Or 
IsNull(Forms!mProvvGuida.Prov.Value) Then
'   MsgBox "La sigla della Provincia è obbligatoria", vbCritical, "Controllo 
Sigla Provincia"
'   If vbOK = vbOK Then Forms!mProvvGuida.Comando48.Enabled = False
'   If vbOK = vbOK Then Cancel = True
'   Forms!mProvvGuida.Prov.SetFocus
'   Forms!mProvvGuida.Prov.BackColor = RGB(255, 0, 0)
'   Forms!mProvvGuida.AllowEdits = True
'   Exit Function
'Else
'   Forms!mProvvGuida.Prov.BackColor = RGB(300, 300, 350)
'End If
If (Forms!mProvvGuida.NatoIl.Value) = "" Or 
IsNull(Forms!mProvvGuida.NatoIl.Value) Then
   MsgBox "La data di nascita è obbligatoria", vbCritical, "Controllo Data 
di Nascita"
   If vbOK = vbOK Then Forms!mProvvGuida.Comando48.Enabled = False
   If vbOK = vbOK Then Cancel = True
   Forms!mProvvGuida.NatoIl.SetFocus
   Forms!mProvvGuida.NatoIl.BackColor = RGB(255, 0, 0)
   Forms!mProvvGuida.AllowEdits = True
   Forms!mProvvGuida.CasellaControllo83.Value = False
   Exit Function
Else
   Forms!mProvvGuida.NatoIl.BackColor = RGB(300, 300, 350)
End If
'If (Forms!mProvvGuida.ResidenteA.Value) = "" Or 
IsNull(Forms!mProvvGuida.ResidenteA.Value) Then
'   MsgBox "Il Comune di residenza è obbligatorio", vbCritical, "Controllo 
Comune di residenza"
'   If vbOK = vbOK Then Forms!mProvvGuida.Comando48.Enabled = False
'   If vbOK = vbOK Then Cancel = True
'   Forms!mProvvGuida.ResidenteA.SetFocus
'   Forms!mProvvGuida.ResidenteA.BackColor = RGB(255, 0, 0)
'   Forms!mProvvGuida.AllowEdits = True
'   Exit Function
'Else
'   Forms!mProvvGuida.ResidenteA.BackColor = RGB(300, 300, 350)
'End If
'If (Forms!mProvvGuida.Prov1.Value) = "" Or 
IsNull(Forms!mProvvGuida.Prov1.Value) Then
'   MsgBox "La sigla della provincia del comune di residenza è 
obbligatoria", vbCritical, "Controllo sigla Provincia di residenza"
'   If vbOK = vbOK Then Forms!mProvvGuida.Comando48.Enabled = False
'   If vbOK = vbOK Then Cancel = True
'   Forms!mProvvGuida.Prov1.SetFocus
'   Forms!mProvvGuida.Prov1.BackColor = RGB(255, 0, 0)
'   Forms!mProvvGuida.AllowEdits = True
'   Exit Function
'Else
'   Forms!mProvvGuida.Prov1.BackColor = RGB(300, 300, 350)
'End If
If (Forms!mProvvGuida.ViaeNr.Value) = "" Or 
IsNull(Forms!mProvvGuida.ViaeNr.Value) Then
   MsgBox "l'indirizzo di residenza è obbligatorio", vbCritical, "Controllo 
Indirzzo di Residenza"
   If vbOK = vbOK Then Forms!mProvvGuida.Comando48.Enabled = False
   If vbOK = vbOK Then Cancel = True
   Forms!mProvvGuida.ViaeNr.SetFocus
   Forms!mProvvGuida.ViaeNr.BackColor = RGB(255, 0, 0)
   Forms!mProvvGuida.AllowEdits = True
   Forms!mProvvGuida.CasellaControllo83.Value = False
   Exit Function
Else
   Forms!mProvvGuida.ViaeNr.BackColor = RGB(300, 300, 350)
End If
'If Len(Forms!mProvvGuida.Cap.Value) <> 5 Then
'    MsgBox "Controlla la lunghezza del CAP", vbCritical, "Controllo Codice 
di Avviamento Postale"
'    If vbOK = vbOK Then Forms!mProvvGuida.Comando48.Enabled = False
'    If vbOK = vbOK Then Cancel = True
'    Forms!mProvvGuida.Cap.SetFocus
'    Forms!mProvvGuida.Cap.BackColor = RGB(255, 0, 0)
'    Forms!mProvvGuida.AllowEdits = True
'    Exit Function
'Else
'   Forms!mProvvGuida.Cap.BackColor = RGB(300, 300, 350)
'End If
'If Len(Forms!mProvvGuida.Cap.Value) <> 5 Or 
IsNull(Forms!mProvvGuida.Cap.Value) Then
'   MsgBox "Vallefuoco devi inserire il  CAP", vbCritical, "Controllo Codice 
di Avviamento Postale"
'   If vbOK = vbOK Then Forms!mProvvGuida.Comando48.Enabled = False
'   If vbOK = vbOK Then Cancel = True
'   Forms!mProvvGuida.Cap.SetFocus
'   Forms!mProvvGuida.Cap.BackColor = RGB(255, 0, 0)
'   Forms!mProvvGuida.AllowEdits = True
'   Exit Function
'Else
'   Forms!mProvvGuida.Cap.BackColor = RGB(300, 300, 350)
'End If
If Len(Forms!mProvvGuida.Codicefiscale.Value) <> 16 Then
   MsgBox "Controlla la lunghezza del Codice Fiscale", vbCritical, 
"Controllo Codice Fiscale"
   If vbOK = vbOK Then Forms!mProvvGuida.Comando48.Enabled = False
   If vbOK = vbOK Then Cancel = True
   Forms!mProvvGuida.Codicefiscale.SetFocus
   Forms!mProvvGuida.Codicefiscale.BackColor = RGB(255, 0, 0)
   Forms!mProvvGuida.AllowEdits = True
   Forms!mProvvGuida.CasellaControllo83.Value = False
   Exit Function
Else
   Forms!mProvvGuida.Codicefiscale.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvGuida.Denuncia.Value) = "" Or 
IsNull(Forms!mProvvGuida.Denuncia.Value) Then
   MsgBox "Il motivo della denuncia  è obbligatorio", vbCritical, "Controllo 
motivo denuncia"
   If vbOK = vbOK Then Forms!mProvvGuida.Comando48.Enabled = False
   If vbOK = vbOK Then Cancel = True
   Forms!mProvvGuida.Denuncia.SetFocus
   Forms!mProvvGuida.Denuncia.BackColor = RGB(255, 0, 0)
   Forms!mProvvGuida.AllowEdits = True
   Forms!mProvvGuida.CasellaControllo83.Value = False
   Exit Function
Else
   Forms!mProvvGuida.Denuncia.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvGuida.Presentatail.Value) = "" Or 
IsNull(Forms!mProvvGuida.Presentatail.Value) Then
   MsgBox "La data di presentazione della denuncia è obbligatoria", 
vbCritical, "Controllo Data della denuncia"
   If vbOK = vbOK Then Forms!mProvvGuida.Comando48.Enabled = False
   If vbOK = vbOK Then Cancel = True
   Forms!mProvvGuida.Presentatail.SetFocus
   Forms!mProvvGuida.Presentatail.BackColor = RGB(255, 0, 0)
   Forms!mProvvGuida.AllowEdits = True
   Forms!mProvvGuida.CasellaControllo83.Value = False
   Exit Function
Else
   Forms!mProvvGuida.Presentatail.BackColor = RGB(300, 300, 350)
End If
If IsNumeric(Forms!mProvvGuida.Telefono.Value) = False Then
   MsgBox "controllare il numero di telefono", vbCritical, "Controllo Numero 
di telefono"
   If vbOK = vbOK Then Forms!mProvvGuida.Comando48.Enabled = False
   If vbOK = vbOK Then Cancel = True
   Forms!mProvvGuida.Telefono.SetFocus
   Forms!mProvvGuida.Telefono.BackColor = RGB(255, 0, 0)
   Forms!mProvvGuida.AllowEdits = True
   Forms!mProvvGuida.CasellaControllo83.Value = False
   Exit Function
Else
   Forms!mProvvGuida.Telefono.BackColor = RGB(300, 300, 350)
End If
'If IsNumeric(Forms!mProvvGuida.Cap.Value) = False Then
'   MsgBox "il campo CAP puo' essere solo numerico", vbCritical, "Controllo 
Codice di Avviamento Postale"
'   If vbOK = vbOK Then Forms!mProvvGuida.Comando48.Enabled = False
'   If vbOK = vbOK Then Cancel = True
'   Forms!mProvvGuida.Cap.SetFocus
'   Forms!mProvvGuida.Cap.BackColor = RGB(255, 0, 0)
'   Forms!mProvvGuida.AllowEdits = True
'   Exit Function
'Else
'   Forms!mProvvGuida.Cap.BackColor = RGB(300, 300, 350)
'End If
If (Forms!mProvvGuida.Estensore.Value) = "" Or 
IsNull(Forms!mProvvGuida.Estensore.Value) Then
    MsgBox "L'Estensore è obbligartorio", vbCritical, "Controllo Estensore"
    If vbOK = vbOK Then Forms!mProvvGuida.Comando48.Enabled = False
    If vbOK = vbOK Then Cancel = True
    Forms!mProvvGuida.Estensore.SetFocus
    Forms!mProvvGuida.Estensore.BackColor = RGB(255, 0, 0)
    Forms!mProvvGuida.AllowEdits = True
    Forms!mProvvGuida.CasellaControllo83.Value = False
    Exit Function
Else
   Forms!mProvvGuida.Estensore.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvGuida.CasellaControllo66 = True Or 
Forms!mProvvGuida.CasellaControllo68 = True) Then GoTo obbligoNo
Lenti
obbligoNo:
Forms!mProvvGuida.AllowEdits = False
'Forms!mProvvGuida.AllowEdits = False
'Forms!MPROVVGUIDA.BackColor = RGB(255, 0, 0)
'Forms!mProvvGuida.NrProt.BackColor = RGB(300, 300, 350)
Forms!mProvvGuida.Comando43.Enabled = True
Forms!mProvvGuida.Comando43.SetFocus
Forms!mProvvGuida.Comando44.Enabled = False
Forms!mProvvGuida.Comando45.Enabled = False
Forms!mProvvGuida.Comando47.Enabled = True
Forms!mProvvGuida.CasellaControllo83.Value = True
End Function
Function Lenti()
Dim strmsg As String
strmsg = "Il Signor " & Forms!mProvvGuida.Cognome & " " & 
Forms!mProvvGuida.Nome & ", nato a " & Forms!mProvvGuida.NatoA & " il " & 
Forms!mProvvGuida.NatoIl & " ha l'obbligo delle Lenti?"
If MsgBox(strmsg, vbInformation + vbYesNo, "Obbligo Lenti") = vbNo Then
   'If vbYesNoCancel = Cancel Then Exit Function
   Forms!mProvvGuida.Testo52 = ""
   Forms!mProvvGuida.Comando44.SetFocus
   Forms!mProvvGuida.Testo52.Enabled = False
   Forms!mProvvGuida.CasellaControllo66.Visible = False
   Forms!mProvvGuida.CasellaControllo68.Visible = True
   Forms!mProvvGuida.CasellaControllo68 = True
   Else
      Forms!mProvvGuida.Testo52.Enabled = True
      'Forms!mprovvguida.Testo52.SetFocus
      Forms!mProvvGuida.Testo52 = "OBBLIGO LENTI"
      Forms!mProvvGuida.Comando44.SetFocus
      Forms!mProvvGuida.CasellaControllo66.Visible = True
      Forms!mProvvGuida.CasellaControllo66 = True
      Forms!mProvvGuida.CasellaControllo68.Visible = False
      Forms!mProvvGuida.CasellaControllo68 = False
   End If
Forms!mProvvGuida.Refresh
End Function
Function controllaPF()
'On Error Resume Next
If (Forms!mProvvCirc.NrProt.Value) = "" Or 
IsNull(Forms!mProvvCirc.NrProt.Value) Then
    MsgBox "Il numero di protocollo è obbligatorio", vbCritical, "Controllo 
numero di Protocollo"
    'If vbOK = vbOK Then Forms!mprovvCirc.comando48.Enabled = False
    If vbOK = vbOK Then Cancel = True
    Forms!mProvvCirc.NrProt.SetFocus
    Forms!mProvvCirc.NrProt.BackColor = RGB(255, 0, 0)
    Exit Function
Else
    Forms!mProvvCirc.NrProt.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvCirc.Cognome.Value) = "" Or 
IsNull(Forms!mProvvCirc.Cognome.Value) Then
   MsgBox "Il cognome è obbligatorio", vbCritical, "Controllo Cognome"
   'If vbOK = vbOK Then Forms!mprovvCirc.Comando48.Enabled = False
   If vbOK = vbOK Then Cancel = True
   Forms!mProvvCirc.Cognome.SetFocus
   Forms!mProvvCirc.Cognome.BackColor = RGB(255, 0, 0)
   Exit Function
Else
   Forms!mProvvCirc.Cognome.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvCirc.Nome.Value) = "" Or IsNull(Forms!mProvvCirc.Nome.Value) 
Then
   MsgBox "Il nome  è obbligatorio", vbCritical, "Controllo Nome"
   'If vbOK = vbOK Then Forms!mProvvCirc.Comando48.Enabled = False
   If vbOK = vbOK Then Cancel = True
   Forms!mProvvCirc.Nome.SetFocus
   Forms!mProvvCirc.Nome.BackColor = RGB(255, 0, 0)
   Exit Function
Else
   Forms!mProvvCirc.Nome.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvCirc.NatoA.Value) = "" Or 
IsNull(Forms!mProvvCirc.NatoA.Value) Then
    MsgBox "Luogo di nascita obbligatorio", vbCritical, "Controllo luogo di 
nascita"
    'If vbOK = vbOK Then Forms!mProvvCirc.Comando48.Enabled = False
    If vbOK = vbOK Then Cancel = True
    Forms!mProvvCirc.NatoA.SetFocus
    Forms!mProvvCirc.NatoA.BackColor = RGB(250, 0, 0)
    Exit Function
Else
    Forms!mProvvCirc.NatoA.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvCirc.Prov.Value) = "" Or IsNull(Forms!mProvvCirc.Prov.Value) 
Then
   MsgBox "Sigla Provincia obbligatoria", vbCritical, "Controllo sigla 
Provincia"
   'If vbOK = vbOK Then Forms!mProvvCirc.Comando48.Enabled = False
   If vbOK = vbOK Then Cancel = True
   Forms!mProvvCirc.Prov.SetFocus
   Forms!mProvvCirc.Prov.BackColor = RGB(250, 0, 0)
   Exit Function
Else
   Forms!mProvvCirc.Prov.BackColor = RGB(300, 300, 350)
End If
If Len(Forms!mProvvCirc.Prov.Value) <> "2" Then
   MsgBox "Controllare la lunghezza della sigla provincia", vbCritical, 
"Controllo sigla provincia"
   'If vbOK = vbOK Then Forms!mProvvCirc.Comando48.Enabled = False
   If vbOK = vbOK Then Cancel = True
   Forms!mProvvCirc.Prov.SetFocus
   Forms!mProvvCirc.Prov.BackColor = RGB(250, 0, 0)
   Exit Function
Else
   Forms!mProvvCirc.Prov.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvCirc.NatoIl.Value) = "" Or 
IsNull(Forms!mProvvCirc.NatoIl.Value) Then
   MsgBox "La data di nascita è obbligatoria", 48, "Controllo data di 
nascita - " & Date & ""
   'If vbOK = vbOK Then Forms!mProvvCirc.Comando48.Enabled = False
   If vbOK = vbOK Then Cancel = True
   Forms!mProvvCirc.NatoIl.SetFocus
   Forms!mProvvCirc.NatoIl.BackColor = RGB(255, 0, 0)
   Exit Function
Else
   Forms!mProvvCirc.NatoIl.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvCirc.ResidenteA.Value) = "" Or 
IsNull(Forms!mProvvCirc.ResidenteA.Value) Then
    MsgBox "Il comune di residente è obbligatorio", vbCritical, "Controllo 
Comune di Residenza - " & Date & ""
    'If vbOK = vbOK Then Forms!mProvvCirc.Comando48.Enabled = False
    If vbOK = vbOK Then Cancel = True
    Forms!mProvvCirc.ResidenteA.SetFocus
    Forms!mProvvCirc.ResidenteA.BackColor = RGB(255, 0, 0)
    Exit Function
Else
    Forms!mProvvCirc.ResidenteA.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvCirc.Prov1.Value) = "" Or 
IsNull(Forms!mProvvCirc.Prov1.Value) Then
    MsgBox "La sigla della Provincia di nascita è Obbligatoria", vbCritical, 
"Controllo sigla provincia di nascita"
    'if vbok = vbok then forms!mProvvCirc.comando48.enabled =  false
    If vbOK = vbOK Then Cancel = True
    Forms!mProvvCirc.Prov1.SetFocus
    Forms!mProvvCirc.Prov1.BackColor = RGB(250, 0, 0)
    Exit Function
Else
    Forms!mProvvCirc.Prov1.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvCirc.ViaeNr.Value) = "" Or 
IsNull(Forms!mProvvCirc.ViaeNr.Value) Then
    MsgBox "La Via ed il numero sono Obbligatori", vbCritical, "Controllo 
Via e Numero"
    'If vbOK = vbOK Then Forms!mProvvCirc.Comando48.Enabled = False
    If vbOK = vbOK Then Cancel = True
    Forms!mProvvCirc.ViaeNr.SetFocus
    Forms!mProvvCirc.ViaeNr.BackColor = RGB(255, 0, 0)
    Exit Function
Else
    Forms!mProvvCirc.ViaeNr.BackColor = RGB(300, 300, 350)
End If
If Len(Forms!mProvvCirc.Cap.Value) <> "5" Then 'Or 
IsNull(Forms!mProvvCirc.Cap.Value) Then
    MsgBox "Il Codice di Avviamento Postale è obbligatorio", vbCritical, 
"Controllo Codice Avviamento Postale"
    'if vbok = vbok then forms!mProvvCirc.comando48.enabled = then
    If vbOK = vbOK Then Cancel = True
    Forms!mProvvCirc.Cap.SetFocus
    Forms!mProvvCirc.Cap.BackColor = RGB(255, 0, 0)
    Exit Function
Else
    Forms!mProvvCirc.Cap.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvCirc.Marca.Value) = "" Or 
IsNull(Forms!mProvvCirc.Marca.Value) Then
    MsgBox "La marca del veicolo è obbligatoria", vbCritical, "Controllo 
Marca Veicolo"
    'if vbok = vbok then forms!mProvvCirc.comando48.enabled = false
    If vbOK = vbOK Then Cancel = True
    Forms!mProvvCirc.Marca.SetFocus
    Forms!mProvvCirc.Marca.BackColor = RGB(250, 0, 0)
    Exit Function
Else
    Forms!mProvvCirc.Marca.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvCirc.Modello.Value) = "" Or 
IsNull(Forms!mProvvCirc.Modello.Value) Then
   MsgBox "Il modello è obbligatorio", vbCritical, "Controllo Modello"
   'if vbok = vbok then forms!mProvvCirc.comando48.enabled = false
   If vbOK = vb0k Then Cancel = True
   Forms!mProvvCirc.Modello.SetFocus
   Forms!mProvvCirc.Modello.BackColor = RGB(255, 0, 0)
   Exit Function
Else
   Forms!mProvvCirc.Modello.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvCirc.Targato.Value) = "" Or 
IsNull(Forms!mProvvCirc.Targato.Value) Then
   MsgBox "La targa è obbligatoria", vbCritical, "Controllo Targa"
   'if vbok = vbok then forms!mProvvCirc.targato.comando48.enabled =  false
   If vbOK = vbOK Then Cancel = True
   Forms!mProvvCirc.Targato.SetFocus
   Forms!mProvvCirc.Targato.BackColor = RGB(255, 0, 0)
   Exit Function
Else
   Forms!mProvvCirc.Targato.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvCirc.Telaio.Value) = "" Or 
IsNull(Forms!mProvvCirc.Telaio.Value) Then
   MsgBox "Il telaio deve essere composto da 17 caratteri alfa numerici", 
vbCritical, "Controllo Telaio"
   If vbOK = vbOK Then Forms!mProvvCirc.Comando48.Enabled = False
   If vbOK = vbOK Then Cancel = True
   Forms!mProvvCirc.Telaio.SetFocus
   Forms!mProvvCirc.Telaio.BackColor = RGB(255, 0, 0)
   Exit Function
Else
   Forms!mProvvCirc.Telaio.BackColor = RGB(300, 300, 350)
End If
If Len(Forms!mProvvCirc.Codicefiscale.Value) <> "0" Then
   MsgBox "Il codice fiscale deve essere composto da 17 caratteri 
alfanumerici", vbCritical, "Controllo Codice Fiscale"
   'if vbok = vbok then forms!mProvvCirc.comando48.enabled = 48
   If vbOK = vbOK Then Cancel = True
   Forms!mProvvCirc.Codicefiscale.SetFocus
   Forms!mProvvCirc.Codicefiscale.BackColor = RGB(255, 0, 0)
   Exit Function
Else
   Forms!mProvvCirc.Codicefiscale.BackColor = RGB(300, 300, 350)
End If
Forms!mProvvCirc.AllowEdits = False
Forms!mProvvCirc.Comando43.Enabled = True
Forms!mProvvCirc.Comando43.SetFocus
Forms!mProvvCirc.Comando47.Enabled = True
Forms!mProvvCirc.Comando44.Enabled = False
Forms!mProvvCirc.Comando45.Enabled = False
End Function
Function campovuoto()
'On Error Resume Next
If (Forms!mProvvCirc.Cognome.Value) <> "" Or (Forms!mProvvCirc.Nome.Value) 
<> "" Then
    Forms!mProvvCirc.NomeDitta.Value = "//"
    Forms!mProvvCirc.SedeDitta.Value = "//"
    Forms!mProvvCirc.Prov2.Value = "//"
    Forms!mProvvCirc.Via.Value = "//"
    Forms!mProvvCirc.Cap1.Value = "/////"
'Else
'    Forms!mProvvCirc.Cognome.Value = "//"
 '   Forms!mProvvCirc.Nome.Value = "//"
  '  Forms!mProvvCirc.NatoA.Value = "//"
   ' Forms!mProvvCirc.Prov.Value = "//"
    'Forms!mProvvCirc.ResidenteA.Value = "//"
   ' Forms!mProvvCirc.Prov1.Value = "//"
   ' Forms!mProvvCirc.ViaeNr.Value = "//"
   ' Forms!mProvvCirc.Cap.Value = "//"
End If
Forms!mProvvCirc.AllowEdits = False
End Function
Function compilaDitta()
If (Forms!mProvvCirc.Cognome.Value Or Forms!mProvvCirc.Nome.Value) <> "" 
Then
    Forms!mProvvCirc.Numero.Value = "//"
    Forms!mProvvCirc.SedeDitta.Value = "//"
    Forms!mProvvCirc.Prov2.Value = "//"
    Forms!mProvvCirc.Via.Value = "//"
    Forms!mProvvCirc.Cap1.Value = "/////"
End If
Forms!mProvvCirc.allwedits = False
End Function
Function compilaCittadino()
If (Forms!mProvvCirc.NomeDitta.Value) <> "" Then
    Forms!mProvvCirc.Cognome.Value = "//"
    Forms!mProvvCirc.Nome.Value = "//"
    Forms!mProvvCirc.NatoA.Value = "//"
    Forms!mProvvCirc.Prov.Value = "//"
    Forms!mProvvCirc.ResidenteA.Value = "//"
    Forms!mProvvCirc.Prov1.Value = "//"
    Forms!mProvvCirc.ViaeNr.Value = "//"
    Forms!mProvvCirc.Cap.Value = "//"
End If
Forms!mProvvCirc.AllowEdits = False
End Function
Function controlloPG()
On Error Resume Next
If (Forms!mProvvCirc.NomeDitta.Value) = "" Or 
IsNull(Forms!mProvvCirc.NomeDitta.Value) Then
    MsgBox "Campo Obbligatorio. Inserire la denominazione della 
Ditta/Società", vbCritical, "Inserire la Denominazione della  società"
    If vbOK = vbOK Then Cancel = True
    Forms!mProvvCirc.NomeDitta.SetFocus
    Forms!mProvvCirc.NomeDitta.BackColor = RGB(250, 0, 0)
    Exit Function
Else
    Forms!mProvvCirc.NomeDitta.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvCirc.Numero.Value) = "" Or 
IsNull(Forms!mProvvCirc.Numero.Value) Then
    MsgBox "Campo Obbligatorio. Inserire la sede della Ditta", vbCritical, 
"Controllo Sede Ditta"
    If vbOK = vbOK Then Cancel = True
    Forms!mProvvCirc.Numero.SetFocus
    Forms!mProvvCirc.Numero.BackColor = RGB(250, 0, 0)
    Exit Function
Else
    Forms!mProvvCirc.Numero.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvCirc.Prov2.Value) = "" Or 
IsNull(Forms!mProvvCirc.Prov2.Value) Then
    MsgBox "Campo obbligatorio. Inserire la sigla della Provincia", 
vbCritical, "Controllo Sigla Provincia"
    If vbOK = vbOK Then Cancel = True
    Forms!mProvvCirc.Prov2.SetFocus
    Forms!mProvvCirc.Prov2.BackColor = RGB(250, 0, 0)
    Exit Function
Else
    Forms!mProvvCirc.Prov2.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvCirc.Via.Value) = "" Or IsNull(Forms!mProvvCirc.Via.Value) 
Then
    MsgBox "Campo Obbligatorio. Inserire l'indirizzo", vbCritical, 
"Controllo Indirizzo"
    If vbOK = vbOK Then Cancel = True
    Forms!mProvvCirc.Via.SetFocus
    Forms!mProvvCirc.Via.BackColor = RGB(250, 0, 0)
    Exit Function
Else
    Forms!mProvvCirc.Via.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvCirc.Cap1.Value) = "" Or IsNull(Forms!mProvvCirc.Cap1.Value) 
Then
   MsgBox "Campo Obbligatorio. Inserire il CAP", vbCritical, "Controllo CAP"
   If vbOK = vbOK Then Cancel = True
   Forms!mProvvCirc.Cap1.SetFocus
   Forms!mProvvCirc.Cap1.BackColor = RGB(250, 0, 0)
   Exit Function
Else
   Forms!mProvvCirc.Cap1.BackColor = RGB(300, 300, 350)
End If
If Len(Forms!mProvvCirc.Cap1.Value) <> "5" Then
   MsgBox "Campo obbligatorio. Controllare la lunghezza del CAP", 
vbCritical, "Controllo lunghezza CAP"
   If vbOK = vbOK Then Cancel = True
   Forms!mProvvCirc.Cap1.SetFocus
   Forms!mProvvCirc.Cap1.BackColor = RGB(250, 0, 0)
   Exit Function
Else
   Forms!mProvvCirc.Cap1.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvCirc.Denuncia.Value) = "" Or 
IsNull(Forms!mProvvCirc.Denuncia.Value) Then
    MsgBox "Campo Obbligatorio. Inserire il  tipo di denuncia", vbCritical, 
"Controllo tipo di denuncia"
    If vbOK = vbOK Then Cancel = True
    Forms!mProvvCirc.Denuncia.SetFocus
    Forms!mProvvCirc.Denuncia.BackColor = RGB(250, 0, 0)
    Exit Function
Else
    Forms!mProvvCirc.Denuncia.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvCirc.Presentatail.Value) = "" Or 
IsNull(Forms!mProvvCirc.Presentatail.Value) Then
    MsgBox "Campo Obbligatorio. Inserire la data di presentazione della" & 
vbCrLf & "denuncia", vbCritical, "Controllo data di rilascio della denuncia"
    If vbOK = vbOK Then Cancel = True
    Forms!mProvvCirc.Presentatail.SetFocus
    Forms!mProvvCirc.Presentatail.BackColor = RGB(250, 0, 0)
    Exit Function
Else
    Forms!mProvvCirc.Presentatail.BackColor = RGB(300, 300, 350)
End If
If (Forms!mProvvCirc.Estensore.Value) = "" Or 
IsNull(Forms!mProvvCirc.Estensore.Value) Then
    MsgBox "Campo Obbligatorio. Inserire l'estensore", vbCritical, 
"Controllo Estensore"
    If vbOK = vbOK Then Cancel = True
    Forms!mProvvCirc.Estensore.SetFocus
    Forms!mProvvCirc.Estensore.BackColor = RGB(250, 0, 0)
    Exit Function
Else
    Forms!mProvvCirc.Estensore.BackColor = RGB(300, 300, 350)
End If
Forms!mProvvCirc.AllowEdits = False
Forms!mProvvCirc.Comando43.Enabled = True
Forms!mProvvCirc.Comando43.SetFocus
Forms!mProvvCirc.Comando47.Enabled = True
Forms!mProvvCirc.Comando44.Enabled = False
Forms!mProvvCirc.Comando45.Enabled = False
End Function
Comunque provero' come dici tu con una variabile a livello modulo.
Ti faccio sapere se funge.
Se hai altre indicazioni da fornirmi saranno bene accette.
Grazie mille michele

 
Mi sono scontrato più volte con la testardaggine del mio capo in merito: 
metti un bell'if iniziale
If (campinoncompleti=1) Then
    Me.campo1.Setfocus
    Goto RitornaAllaForm
End If
così se non completa il campo fa come il mio capo che schiaccia 5-6-7-8 
volte e poi si accorge che sta sbagliando. Provare per credere. I 
messaggi li leggiamo solo noi, la gente comune schiaccia ok a caso (un 
altro tasto preferito è: Avanti>)

 altro tasto preferito è: Avanti>)
Ciao Davide
@Alex

 preferito č: Avanti>)
Bhe, comunque quando viene generato il messaggio di errore per omessa 
compilazione del campo, il Setfocus si sposta in quest'ultimo il cui sfondo 
diventa di colore rosso. Insomma č alquanto difficile far finta di nulla, 
vabbe' che la gente comune schiaccia ok a caso, ma se in questo caso non 
capisce cosa sta succedendo, allora non č gente comune ma "gente anormale".
Ciao grazie per l'aiuto.