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 FunctionRichiamando 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 Submentre 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 SubSe 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. |