Formato Numero Personalizzato decimaleemigliaia



  • Formato Numero Personalizzato - decimale&migliaia
    di Scarcagnizzu data: 11/09/2012 13:05:34

    Ciao
    Sono nuova del forum ed ho una domanda di cui mi vergogno. Devo presentare un prospetto in excel e mi hanno chiesto di presentare i dati con i separatore decimale e migliaia invertiti (in sintesi: come separatore di migliaia la virgola invece del punto e decimale, il punto anzichè la virgola).
    Ovviamente se procedo da "Opzioni di Excel" - Impostazioni avanzate, questa modifica va ad impattare su tutti i file. Volevo sapere se esiste un codice da poter inserire in "Personalizzato" del formato numero, in modo da poterlo utilizzare solo quando serve.
    Non so se sono stata abbastanza chiara.
    Vi ringrazio




  • di xxx (utente non iscritto) data: 11/09/2012 14:10:56

    ciao
    per fare questo devi utilizzare delle macro nel file in questione
    queste vanno messe in ThisWorkbook e non fanno altro che all'apertura del file invertono l'ordine e alla chiusura di questi impostano di nuovo i dati standard
    vedi anche il file allegato

    ciao
     
    ''ThisWorkbook
    Option Explicit
    
    Private Sub Workbook_BeforeClose(Cancel As Boolean) ''chiude e Ripristina dati standar
         With Application
            .DecimalSeparator = ","
            .ThousandsSeparator = "."
            .UseSystemSeparators = True
        End With
    End Sub
    
    ''ThisWorkbook
    Private Sub workbook_open()
       With Application
            .DecimalSeparator = "."
            .ThousandsSeparator = ","
            .UseSystemSeparators = False
        End With
    End Sub
    



  • di Scarcagnizzu data: 11/09/2012 18:22:36

    Ciao.....premetto che non ho mai usato una macro in vita mia, ma mi sembra che questa non faccia altro che replicare la modifica delle impostazioni di excel di cui parlavo prima
    Speravo ci fosse un metodo molto più immediato, anche perchè
    all'interno dello stesso worksheet vorrei poter rappresentare gli importi in entrambi i modi.
    Per questo speravo ci fosse un formato numero - personalizzato da inserire in Formato CELLE - Numero - Personalizzato.
    Grazie comunque.
    A presto



  • di Vecchio Frac data: 11/09/2012 18:27:21

    cit. "Sono nuova del forum ed ho una domanda di cui mi vergogno."

    Aggiungo che non ci si deve mai vergognare di porre domande o problemi.
    Il trick di xxx ovviamente è perfetto anche se può stare in un Activate del Sheet senza scomodare addirittura l'Open del Workbook ^_^





  • di xxx (utente non iscritto) data: 11/09/2012 18:53:49

    ciao Vecchio Frac

    infatti l'idea di partenza era di utilizzare una macro nel foglio con l'evento Activate della sheet quando questa veniva selezionata, ma poi ho ripiegato sullevento open per non dare piu' di tante spiegazioni a riguardo
    comunque se la nostra amica vuol utilizzare l'evento in questine nel singolo foglio basta che inserisca nel foglio dove deve fare questa variazione la macro sotto citata e nelle celle faccia la formattazione personalizzata del tipo #.##0,00 e dopo quando per la prima volta attivera' il foglio la formattazione della cella passera' da 1.234,56 Standard a 1,234.56 come aveva chiesto in partenza

    ciao da xxx
     
    Private Sub Worksheet_Activate()
        With Application
            .DecimalSeparator = "."
            .ThousandsSeparator = ","
            .UseSystemSeparators = False
        End With
    End Sub



  • di Vecchio Frac data: 11/09/2012 19:27:21

    Grazie xxx (nick più anonimo non potevi scegliere ^_^)
    Così mi piace... formazione & informazione per i nostri utenti :)





  • di Scarcagnizzu data: 12/09/2012 08:52:39

    Grazie.
    Facciamo così....torno quando ne capirò un pò di più di VBA.
    Piuttosto: non è che mi potete consigliare dei testi o dei corsi on-line?

    Grazie ancora
    Ci risentiamo fra qualche mese



  • di Vecchio Frac data: 12/09/2012 09:22:43

    Tra qualche mese? Speriamo di rileggerti prima ^_^
    Comunque no, che io sappia (ho cercato) non esistono alternative mediante la personalizzazione del formato del numero. I
    Puoi costruire una funzione personalizzata con un booleano True o False che indica quale formato utilizzare, da richiamare nel foglio di lavoro, e dovrai convertire il numero in testo sostituendo i separatori come conviene; l'unico inconveniente è che ottieni una stringa invece che un numero:

    =FORMATTA_NUMERO(5.655,13) --> "5.655,13"
    =FORMATTA_NUMERO(5.655,13;VERO) --> "5.655,13"
    =FORMATTA_NUMERO(5.655,13;FALSO) --> "5,655.13"

     
    'In un Modulo
    
    Option Explicit
    
    Public Function formatta_numero(num As Long, Optional system_separators As Boolean = True) As String
    Dim s As String
        s = Format(num, "0,00.00")
        If CStr(num) = 0 Then
            formatta_numero = "0"
        Else
            If Not system_separators Then
                s = Replace(s, ".", "@")
                s = Replace(s, ",", ".")
                s = Replace(s, "@", ",")
            End If
            formatta_numero = s
        End If
    End Function