Valori fissi su una Textbox



  • 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