Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Controllo su inserimento numeri

    vi chiedo una cortesia: Come posso mettere all'interno di questa
    Sub un controllo con un if KeYAscii...... e poi un then msgbox .....

    per fare in modo che se inserisco una lettera dove devo inserire un numero.

    Grazie.. ecco il CODICE SOTTO.


    Private Sub txtLower_KeyPress(KeyAscii As Integer)

    Dim s As String

    If KeyAscii >= Asc("0") Or KeyAscii <= Asc("9") Then
    s = Replace(txtLower, ".", "")
    txtLower = FormatNumber(s & Chr$(KeyAscii), 0, , , vbTrue)

    Else
    MsgBox$ MyCaption(31)

    End If

    KeyAscii = 0

    End Sub

  2. #2
    Utente di HTML.it L'avatar di JamesD
    Registrato dal
    Oct 2001
    Messaggi
    415
    codice:
    if (keyasci < 48) or (keyascii > 57) then
       msgbox "Devi inserire solo numeri stupido!!"
    end if
    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    12
    comunque potresti anche inserire alla dichiarazione delle variabili:

    dim giggi as integer
    on error msgbox "Devi inserire un numero cretino!!", vbExclamation

    ciao

  4. #4
    Utente di HTML.it L'avatar di JamesD
    Registrato dal
    Oct 2001
    Messaggi
    415
    Originariamente inviato da gxgijjy
    comunque potresti anche inserire alla dichiarazione delle variabili:

    dim giggi as integer
    on error msgbox "Devi inserire un numero cretino!!", vbExclamation

    ciao
    eh?!?
    a parte che si potrebbero generare duecentoventisettemilioni (forse ho esagerato )di errori e così come l'hai scritta te non va bene! Poi è inutile usare un'altra variabile visto che il keypress è un evento e già di per sè la variabile keyascii!

  5. #5
    private......

    te lo scrivoin italiano
    se keyascii non è compresa tra x e y allora keyascii è uguale a spazio vuoto

    if keyascii < x or keyascii > y then
    keyascii = [codice di bianco]
    end if

    in questo modo



    end....
    Il dubbio non è piacevole, ma la certezza è ridicola. Solo gli imbecilli son sicuri di ciò che dicono.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    12
    Per JamesD

    Scusa forse non mi sono spiegato bene:
    secondo me non c' è bisogno di utilizzare una funzione per controllare se sto inserendo un numero o no. Pensa che la variabile giggi sia ciò che prende da un TextBox, non uso nessuna funzione, se percaso si verifica qualche errore si svolge il codice di on error (si può usare un goto se questo controllo viene usato su molte variabili)

    Ti avverto comunque che il codice che ho messo viene da un programma che ho fatto e funziona! La soluzione che hai adottato va benissimo lo stesso tanto che ho fatto la tua stessa cosa in un programma in C++

    Se non mi sono fatto intendere ti invio un programmino semplicissimo con controllo sui numeri

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    12
    OOPS! JamesD ha ragione!

    dopo on error devo mettere un goto:

    Dim giggi As Integer
    On Error GoTo WrongValues
    ...
    WrongValues:
    msgbox "errore", vbExclamation

    Scusatemi, ho iniziato Visual Basic da due giorni!

  8. #8
    il mio metodo è più complicato ma frega anche i cut & paste

    Private Sub txtImporto_Change()

    Dim a As Integer
    Dim Cifra As String
    Cifra = txtImporto.Text
    Posizione = txtImporto.SelStart
    a = Posizione
    ciccio = ControlloNumerico(Cifra, 999, 2, a)
    If ciccio = -1 Then
    Cifra = delete(Cifra, a)
    txtImporto.Text = Cifra
    txtImporto.SelStart = Posizione

    ElseIf ciccio = 1 Then
    Cifra = delete(Cifra, a)
    txtImporto.Text = Cifra
    txtImporto.SelStart = Posizione

    ElseIf ciccio = 2 Then
    Cifra = delete(Cifra, a)
    txtImporto.Text = Cifra
    txtImporto.SelStart = Posizione


    End If

    Function ControlloNumerico(Stringa As String, MaxInteri As Integer, _
    MaxDecimali As Integer, Posizione As Integer) As Integer
    'risultato -1 errore generico inseriti caratteri non conformi
    'risultato 0 ok
    'risultato 1 errore superato maxinteri
    'risultato 2 errore superato maxdecimali

    controllo = 0
    For Posizione = 1 To Len(Stringa)
    aaa = Mid(Stringa, Posizione, 1)
    ascii = Asc(aaa)
    If ascii > 46 And ascii < 58 Or ascii = 44 Or ascii = 46 Then
    Posizione = Posizione
    Else
    controllo = -1
    ControlloNumerico = controllo
    Exit Function
    End If
    Next
    posizionevirgola = InStr(Stringa, ",")

    partedecimale = Mid(Stringa, posizionevirgola + 1)
    If posizionevirgola > 0 Then
    parteintera = Mid(Stringa, 1, Len(Stringa) - (Len(partedecimale) + 1))
    If Len(parteintera) = 0 Then
    controllo = -1
    ControlloNumerico = controllo
    Exit Function
    End If
    End If
    If Len(Stringa) = 0 Then
    controllo = 1
    ControlloNumerico = controllo
    Exit Function
    End If
    If posizionevirgola > 1 Then
    If Len(parteintera) > MaxInteri Then
    controllo = 1
    ControlloNumerico = controllo
    Exit Function
    End If
    If Len(parteintera) = 0 Then
    controllo = 1
    ControlloNumerico = controllo
    Exit Function
    End If
    If Len(partedecimale) > MaxDecimali Then
    controllo = 2
    ControlloNumerico = controllo
    Exit Function
    End If
    End If
    ControlloNumerico = controllo
    End Function
    Function delete(Stringa As String, Posizione As Integer) As String
    ' questa funzione cancella un carattere
    If Posizione = 0 Then
    del = ""
    delete = del
    Exit Function
    End If
    If Len(Stringa) = 0 Then
    del = ""
    delete = del
    Exit Function
    End If
    lunghezza = Len(Stringa)
    If Posizione = lunghezza Then
    ccc = Mid(Stringa, 1, lunghezza - 1)
    del = ccc
    delete = del
    Exit Function
    End If
    If Posizione < lunghezza Then
    ccc = Mid(Stringa, 1, Posizione - 1)
    vvv = Mid(Stringa, Posizione + 1)
    del = ccc + vvv
    delete = del
    Exit Function
    End If
    If Posizione > lunghezza Then
    del = -1
    delete = del
    Exit Function
    End If
    delete = del
    End Function
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  9. #9
    fai così:


    If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 8 Then
    KeyAscii = 0
    msgbox "Msg"
    end if

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.