Forms

3.101 Accettare che in una casella di testo di una maschera vengano digitati solo numeri
  Roberto, Alessandro Baraldi

In un modulo del database memorizzare la seguente funzione:
Public Function CkDgtNumber(KeyAscii As Integer,nMin as Integer, nMax As Integer) As Integer
   CkDgtNumber = 30
   If KeyAscii >= 48 + nmin And KeyAscii <= 48 + nMax Then CkDgtNumber = KeyAscii
   Select Case KeyAscii
      Case 44, 45
         CkDgtNumber = KeyAscii
      Case vbKeyBack, vbKeyTab, vbKeyClear, vbKeyReturn
         CkDgtNumber = KeyAscii
      Case vbKeyEscape, vbKeyDelete, vbKeyNumlock
         CkDgtNumber = KeyAscii
   End Select
End Function
Richiamando tale funzione a fronte dell'evento "Su pressione" del controllo della maschera in cui si debbono poter digitare solo numeri, è possibile impedire di digitare altri caratteri.
E' altresì possibile accettare solo la digitazione di numeri compresi all'interno di un determinato range; se ad esempio si desidera che in una casella di testo chiamata MiaCasella sia possibile digitare solamente numeri compresi tra 0 e 9, a fronte dell'evento "Su pressione" di tale controllo si genererà il seguente codice VBA:
Private Sub MiaCasella_KeyPress(KeyAscii As Integer)
     KeyAscii = CkDgtNumber(KeyAscii, 0, 9)
End Sub
mentre se si vuole che sia possibile digitare solo numeri compresi tra 3 e 7, il richiamo della funzione di cui sopra dovrà essere effettuato nel modo seguente:
Private Sub MiaCasella_KeyPress(KeyAscii As Integer)
     KeyAscii = CkDgtNumber(KeyAscii, 3, 7)
End Sub
Se non è necessario stabilire un range di validità (ovvero sono valide cifre contenute tra 0 e 9) sarebbe possibile la verifica tramite la funzione intrinseca IsNumeric; in quel caso però il controllo avverrebe dopo che sia avvenuta la digitazione errata ovvero dopo averla comunque accettata, con questa tecnica invece non è proprio permessa la digitazione di caratteri non ammessi.


Se pensate di avere del materiale freeware interessante e volete pubblicarlo, allora leggete qui.