Salve ecco il problema.
devo ricevere dei dati dall'utente, allora utilizzo la inputbox.
Vorrei fare in modo che sia possibile inserire soltanto numeri?
P.s in realtà oltre che ai numeri anche il segno + es. 30+20
Grazie anticipatamente
Salve ecco il problema.
devo ricevere dei dati dall'utente, allora utilizzo la inputbox.
Vorrei fare in modo che sia possibile inserire soltanto numeri?
P.s in realtà oltre che ai numeri anche il segno + es. 30+20
Grazie anticipatamente
Basta verificare i dati dopo che sono stati inseriti con IsNumerical...
codice:Dim stringa As String Dim numero As Double Do stringa = InputBox("Inserisci un numero:") Loop Until IsNumeric(stringa) numero = CDbl(stringa)
Amaro C++, il gusto pieno dell'undefined behavior.
grazie per l'interessamento, però non è quello che volevo (così potevo farlo anche da solo). Il fatto è che non voglio dire all'utente : hai sbagliato, ridammi i dati è così ipoteticamente all'infinito
E quindi cosa vuoi fare? Un'InputBox in cui sia impossibile scrivere fisicamente valori non numerici? Allora devi crearti un form ad-hoc.
Amaro C++, il gusto pieno dell'undefined behavior.
Usa questo. Disattivi i tasti che non vuoi utilizzare:
Private Sub txtCifra_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case Is < 32 'I tasti di controllo li lasciamo possono tornare utili
Case 48 To 57 'Tutte le cifre
Case Is = 43 'Il segno "+"
Case Else 'Scarta tutti gli altri tasti.
KeyAscii = 0
End Select
End Sub
Tenendo conto di quanto ha suggerito MItaly,
prova in quest'altro modo:
codice:Private Sub Command1_Click() 'Variabili di InputBox: Dim MessageINx, TitleINx, DefaultINx, ValoreINx Dim Num As Variant Do If IsNumeric(ValoreINx) = False And ValoreINx <> "" Then MsgBox "Inserire solo numeri" ElseIf IsNumeric(ValoreINx) = False And ValoreINx = "" Then Exit Do End If MessageINx = "Immettere il tasso annuo nominale per lo scoperto bancario ( 10,25 per 10,25 % ). Il tasso annuo nominale sarà convertito nel tasso in capitalizzazione trimestrale." 'Imposta il messaggio. TitleINx = " Tasso indebitamento bancario a breve" 'Imposta il titolo DefaultINx = "10,25" 'Imposta il valore predefinito ValoreINx = InputBox(MessageINx, TitleINx, DefaultINx) 'Visualizza il messaggio, il titolo e il valore predefinito Loop Until IsNumeric(ValoreINx) Num = ValoreINx End Sub![]()
LM
A quanto ho capito la richiesta di Pascan è un controllo su quanto digitato nell'inputbox senza una successiva validazione.
A quanto ne so, l'inputbox e' alquanto limitata per quanto riguarda il controllo di quanto inserito (solo per inserire asterischi tipo password bisogna ricorrere al subclassingVVoVe: ) per cui mi sento (IMHO) di condividere l'opinione di MItaly in merito alla creazione di un form "ad hoc" .
Anche perche':
IsNumeric è pieno di bugs e per nulla affidabile
La soluzione proposta da Tippolo è applicabile solamente alle TextBox, non alle InputBox.
Ciauz
Chico
Tipo?Originariamente inviato da chico62
IsNumeric è pieno di bugs
Amaro C++, il gusto pieno dell'undefined behavior.
123.22.33.555.444
1234.22,3.3
Entrambe le stringe restituiscono True con IsNumeric....![]()
Ciauz
Chico
Credo che dipenda dal fatto che IsNumeric (come pure le varie Cxxx, come CDbl) con le impostazioni Italiane ignorano il punto considerandolo come separatore delle migliaia che ha significato solo per l'utente.
Amaro C++, il gusto pieno dell'undefined behavior.