controllo inserimento numerico in InputBox



  • controllo inserimento numerico in InputBox
    di nichicanta data: 25/06/2014 13:49:17

    Buongiorno amici, devo inserire tramite InputBox un numero in formato valuta con 2 cifre decimali.
    Ho provato a creare il codice visualizzato nel file allegato, chiamato Cartel1.
    Tutto funziona bene tranne se nella InputBox inserisco le cifre digitando il punto (solo quello inserito con il corrispondente tasto canc).
    Come fare per far uscire un messaggio che avverta di dover premere il punto ( intendo quello che si trova sulla tastiera in corrispondenza dei due punti).
    Non voglio crere confusione, appena provato il file, inserendo il punto in diversi modi capirete qual'è il problema.
    Vi ringrazio e vi saluto con sincerità.



  • di Semio data: 25/06/2014 14:37:21

    Ciao Nichicanta.
    Ho provato il tuo file cartel1.
    Se il tuo problema riguarda il punto di separazione delle migliaia e dei decimali, devo dirti che a me funziona tutto perfettamente. Nel senso che sia se scrivo (ad esempio) 1234567,89 op 1.234.567.89, il risultato che ottengo è sempre €1.234.567,89
    Se non è questo il problema, spiegati meglio.



  • di nichicanta data: 25/06/2014 14:46:15

    Ciao Semio, anche a me funziona bene ( proprio ora ho scoperto in rete che si può fare in questo modo quando ci sono i decimali con virgola con cDbl (v)).
    Il problema (prova e fammi sapere) è quando inserisco le cifre digitando il "simbolo punto" che si trova sotto lo stesso tasto dei "due punti", il formato valuta cambia es. prova a digitare 11.25 ( io visualizzo in A1 questo: €1.125,00 enon è corretto.
    Spero di essermi spiegato bene.



  • di nichicanta data: 26/06/2014 08:08:39

    Auguro, innanzitutto una buona giornata a tutti gli amici di questo bellissimo forum.
    Chiedo il vostro aiuto per la problematica segnalata poichè dopo tante ricerche e prove non riesco a trovare una soluzione al problema.
    Attendo con curiosità i vostri suggerimenti.



  • di lepat (utente non iscritto) data: 26/06/2014 11:02:38

    prova così
     
    Sub m()
    v = InputBox("inserisci il numero")
    If v = Empty Then
        MsgBox "Non hai inserito nulla." & Chr(13) _
        & "Esco dalla procedura"
        Exit Sub
    End If
    If Not IsNumeric(v) Then
        MsgBox ("Devi inserire solo cifre e non lettere.")
    End If
    If InStr(v, ",") > 0 Then v = Replace(v, ",", ".")
    End Sub



  • di nichicanta (utente non iscritto) data: 26/06/2014 11:42:14

    Ciao lepat, (mi stavo preoccupando a non vederti presente nel forum) ho provato quanto da te segnalato e mi causa altre anomalie es. se digito 10,25 nella cella A1 mi arrotonda l'importo ed esce fuori € 10,00.
    Se digito 10.25 (con il punto sopra il tasto canc) mi esce fuori questo:€1.025,00.
    Il tutto funaziona bene (anche il mio codice faceva la stessa cosa) tranne se il segno del punto per le cifre delle migliaia è quello sotto i due punti nella tastiera.
    Prova tu per favore per verificare se si verifica lo stesso problema.
    P.S. la cella A1 è formattata con Valuta e due cifre decimali.



  • di lepat (utente non iscritto) data: 26/06/2014 12:24:24

    il copia e incolla è riuscito male
     
    Sub m()
    v = InputBox("inserisci il numero")
    If v = Empty Then
        MsgBox "Non hai inserito nulla." & Chr(13) _
        & "Esco dalla procedura"
        Exit Sub
    End If
    If Not IsNumeric(v) Then
        MsgBox ("Devi inserire solo cifre e non lettere.")
    End If
    If InStr(v, ",") > 0 Then v = Replace(v, ",", ".")
    ActiveSheet.Range("A1") = Format(Val(v), "€ #,##0.00")
    End Sub



  • di nichicanta (utente non iscritto) data: 26/06/2014 13:29:28

    lepat si presentano gli stessi problemi segnalati con il precedente post, non capisco come mai.
    p.s. Ti ringrazio per il tuo prezioso aiuto.



  • di nichicanta (utente non iscritto) data: 26/06/2014 13:34:22

    lepat, con il codice che posto funziona bene tranne nel caso in cui il punto digitato è quello sotto i due punti sulla tastiera.
    Con la speranza che questo codice possa essere modificato per la risoluzione della problematica da me evidenziata.
     
    Sub m()
    Dim x As Integer
    Dim v As Variant
    v = Application.InputBox("inserisci il numero")
        If v = Empty Then
        MsgBox "Non hai inserito nulla." & Chr(13) _
        & "Esco dalla procedura"
        Exit Sub
        End If
            If Not IsNumeric(v) Then
            MsgBox ("Devi inserire solo cifre e non lettere.")
            End If
    
    ActiveSheet.Range("A1") = CDbl(v)
    End Sub



  • di nichicanta (utente non iscritto) data: 26/06/2014 13:37:48

    Scusami ho dichiarato la x quando in realtà non la utilizzo, questo è frutto di tante prove che faccio per risolvere il mio problema, ho eliminato altro codice che non mi funzionava.



  • di lepat (utente non iscritto) data: 26/06/2014 15:11:34

    non so cosa dirti, a me l'ultima macro che ho allegato funziona perfettamente



  • di nichicanta (utente non iscritto) data: 26/06/2014 15:36:15

    Ho provato il file su di un altro computer, con altre carattersitiche, altra tastiera e con excel 2012, si verifica lo stesso problema.
    In attesa di ulteriori suggerimenti di altri amici del forum, ti saluto e ti ringrazio come sempre lepat.



  • di nichicanta (utente non iscritto) data: 26/06/2014 15:42:44

    Ok, funziona benissimo lepat, ho dovuto dichiarare Variant la variabile v (non riesco a capire perchè dichiarata integer, long o double non faceva il suo dovere), io provavo il tuo codice con la variante v Integer.
    Grazie infinite per il tuo prezioso aiuto che "ci dai".



  • di lepat (utente non iscritto) data: 26/06/2014 20:59:06

    Nichi, non devi modificare il codice suggerito e poi lamentarti perché non funziona, tutte le variabili non dichiarate sono variant, inputbox restituisce una stringa di testo quindi non puoi assegnargli una variabile integer.