Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

corrispettivo della funzione VALORE in VBA?

  1. #1
    caracalla non  in linea Novello
    Sembra banale, ma per me neofita un grosso problema. Pi di tante parole vale il caso pratico.
    Esempio: in una cella ho questo codice 001.004.789 (formattato come testo), in quella accanto ho il codice 02.107.888.10 (formattato come testo).
    In Excel Applicando la funzione VALORE(cella) nel primo caso mi converte la stringa in numero, nel secondo mi d errore (#VALORE!): e ci quello che voglio.
    In VBA ho provato ad usare IsNumeric: me li converte tutti e 2!!!
    Come posso fare?
    Grazie anticipate

  2. #2
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Allora, la differenza tra le 2 Celle, che poi il motivo della differenza di funzionamento della funzione VALORE, dovuta all'interpretazione che viene assegnata al dato.
    Il primo interpretabile come data(06/01/4651) per assurda che sia, il 2 no... quindi non gestibile...!
    La guida infatti recita:
    Testo pu essere in un qualsiasi formato numerico, di data o di ora costante supportato da Microsoft Excel.
    Se testo non  in uno di questi formati, VALORE restituir il valore di errore #VALORE!.
    
    Non capisco poi cosa tu abbia provato a fare con la Funzione IsNumeric che di fatto non converte nulla, ma VALIDA solo l'eventuale formato Numerico, e quelle 2 Celle non contengono un numero...!

    In VBA la funzione potrebbe essere CDBL("02.107.888.10") e vedrai che restituisce il valore atteso come dimostrazione da Finestra immediata
    ?Cdbl("001.004.789")
     1004789 
     
    ?cdbl("02.107.888.10")
     210788810
    
    ℹ️ Leggi di pi su @Alex ...

  3. #3
    caracalla non  in linea Novello
    Io, naturalmento, ho semplificato: quello che mi serve i due codici siano riconosciuti come "tipi" diversi. come in effetti faceva la funzione Excel VALORE.
    Ho da controllare pi di 40.000 codici alfanumerici esportati settimanalmente da DB SAP : nell'esportazione (che non posso controllare) i codici da SAP vengono in parte convertiti in numeri, perdendo gli zero iniziali, i punti (che riconosce come separatori di migliaia, etc etc): ho risolto tutti casi, tranne quelli del tipo

    xxx.xxx.xxx.xx (con 1 o 2 numeri dopo l'ultimo punto)

    Grazie per la risposta, e scusa per il disturbo. Accetto ulteriori suggerimenti.

  4. #4
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Hai provato quello che ti ho detto oppure no...?
    ℹ️ Leggi di pi su @Alex ...

  5. #5
    caracalla non  in linea Novello
    Certo che l'ho provata e viene quello che hai detto tu. Ma proprio questo il problema: a me serve un comando che su 02.107.888.10 mi faccia capire che in effetti non un numero (su cui dovr poi applicare ultriori controlli per ripristinare gli zero iniziali od i puntini) ma gi un codice alfanumerico.
    Grazie per l'interessamento.

  6. #6
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Allora.. cerchiamo di capirci...!
    Sia 001.004.789 che 02.107.888.10 non sono Numeri...!
    Entrambi sono TESTO, quindi se tu non hai una struttura di identificazione, come si f normalmente con le RegExp... devi accettare dei compromessi.
    Nel tuo caso un possibile compromesso pu essere applicando il concetto di Excel di VALORE, come ti ho riportato, che considera validi i dati di tipo TESTO che possono essere
    riconosciuti in DATA.
    A questo punto usa la funzione IsDate("02.107.888.10") e forse potrebbe andare...
    ℹ️ Leggi di pi su @Alex ...

  7. #7
    caracalla non  in linea Novello
    OK, mi viene FALSO, ma viene FALSO anche per 001.004.789

  8. #8
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Beh si scusa ho scordato la conversione esplicita in Data... tuttavia servirebbe una Funzione con Gestione errori....!

    Function DatoValido(strIN As String) As Boolean
    On Error GoTo ERR_NODATA
    DatoValido= IsDate(CDate(strIN))
    Exit Function

    ERR_NODATA:
    DatoValido= False
    End Function
    ℹ️ Leggi di pi su @Alex ...

  9. #9
    caracalla non  in linea Novello
    GRANDISSIMO!!!!
    Funziona!!!!
    Grazie mille e buonissimo week end!

  10. #10
    caracalla non  in linea Novello
    mannaggia: ho parlato troppo presso!!
    Quando il codice superiore a 2.958.465 (equivalente al 31/12/9999) d errore!!

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Risposte: 3
    Ultimo Post: 26-08-2017, 05:57
  2. Scelta di un valore in funzione di un altro valore
    Da alessandracontrol nel forum Presentati
    Risposte: 1
    Ultimo Post: 04-12-2014, 09:54
  3. Funzione che restituisce un valore della stessa riga
    Da alexbenf nel forum Microsoft Excel
    Risposte: 3
    Ultimo Post: 24-01-2013, 15:54
  4. Uso della funzione API PrintDlg
    Da ganzos nel forum Visual Basic 6
    Risposte: 4
    Ultimo Post: 23-07-2011, 10:59
  5. Utilizzo della funzione CDbl
    Da evolution86 nel forum Visual Basic 6
    Risposte: 4
    Ultimo Post: 02-02-2008, 20:05