Valori fissi su una Textbox
Hai un problema con Excel? 
Disabilita tasto 0
di Mash_mash (utente non iscritto) data: 09/03/2009
Ciao a tutti , vi espongo subito il mio problemino :
ho una text box dove posso inerire solo numeri , ma vorrei anche che se il 1^ numero digitato è = a 0(zero) , non mi venga preso in considerazione(tasto 0 appunto disabilitato) , mentre se lo 0(zero) e' successivo al 1^ numero mi venga scritto.
praticamante io pensavo di disabilitare lo 0(zero) subito , e , non appena la text fosse <> da "" , riabilitarlo.
grazie anticipatamente per l'aiuto
'=la mia textbox si chiama txtCodiceCliente"
'
dim varCodiceCliente as integer
'
If IsNumeric(txtCodiceCliente.Text) Then
varCodiceCliente = txtCodiceCliente.Text
Else: txtCodiceCliente.Text = ""
txtCodiceCliente.SetFocus
End If
|
di Enzo (utente non iscritto) data: 09/03/2009
Nell'evento change della tua texztbox inserisci l'istruzione qui sotto (cambia il nome alla testbox"
fa si che quando inserisci per primo un numero 0 lui non lo tiene in considerazione
fa sapere se va bene
X = Len(TextBox1)
Y = LTrim(TextBox1.Text)
D = TextBox1
If D = "" Then
Exit Sub
End If
If Left(D, 1) = 0 Then
TextBox11.Text = ""
Exit Sub
End If
|
di R (utente non iscritto) data: 09/03/2009
è una pessima idea quella di costruire una textbox con convalida dell'input utilizzando gli eventi change o keypress ... guarda nel blog ho scritto un articolo espressioni regolari e pattern (applicazione form) li viene illustrato come creare textbox con convalida ... se spieghi cosa vuoi fare con precisione (che tipo di convalida su che valori esattamente mi sembra d'aver inteso solo interi) posso postarti un codice fatto e finito
saluti
r
di Mash_mash data: 09/03/2009
Per r : praticamente devo dare a degli articoli una corrispondenza numerica che parte da dal numero 1 e vada fino al numero 9.999 , quindi come da te intuito devo fare in modo di inserire solo numeri interi che non abbiano come prima cifra il numero 0(zero).
grazie.
di R (utente non iscritto) data: 09/03/2009
Vedi se ti va bene ... se la textbox non è textbox1 cambia textbox1_exit ... è una routine di evento va incollata nel modulo della form ... la funzione potresti incollarla in un modulo standard se intendi utilizzarla anche da altri punti del tuo codice oppure sempre nel modulo della form.
fai sapere
saluti
r
ps sarebbe meglio aggiungere una label che indica un errore di inserimento ... nel caso fai sapere e ti aggiorno il codice
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With Me.TextBox1
If Len(.Value) > 0 Then
If RE_Validazione_Numero(.Value) = False Then
.SelStart = 0
.SelLength = Len(.Text)
Cancel = True
End If
End If
End With
End Sub
Public Function RE_Validazione_Numero( _
Testo As String) As Boolean
Dim RE As Object
Set RE = CreateObject("VBScript.RegExp")
RE.Global = True
RE.Pattern = "^" & _
"(0|[+-]?(?!0)" & _
"d{1,4})$"
RE_Validazione_Numero = RE.test(Testo)
End Function
|
di R (utente non iscritto) data: 09/03/2009
Questo [+-]? puoi anche toglierlo è il controllo opzionale sul segno ovvero fa si che venga accettato opzionalmente il segno+ o - ma non credo che ti occorra ... nel codice qui sotto ho anche aggiunto label1 prova e vedrai che l'effetto è migliore
saluti
r
Private Sub UserForm_Initialize()
Me.Label1.Caption = ""
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Me.Label1.Caption = ""
With Me.TextBox1
If Len(.Value) > 0 Then
If RE_Validazione_Numero(.Value) = False Then
.SelStart = 0
.SelLength = Len(.Text)
Me.Label1.Caption = "Errore! il dato è errato"
Cancel = True
End If
End If
End With
End Sub
Public Function RE_Validazione_Numero( _
Testo As String) As Boolean
Dim RE As Object
Set RE = CreateObject("VBScript.RegExp")
RE.Global = True
RE.Pattern = "^" & _
"(0|(?!0)" & _
"d{1,4})$"
RE_Validazione_Numero = RE.test(Testo)
End Function
|
di Mash_mash (utente non iscritto) data: 09/03/2009
Mille grazie , lo proverò quasi subito
Vuoi Approfondire?