« Ritorna al blog

Ritorna alla lista completa degli articoli

Modifica del separatore decimale con VBA

EXCEL & VBA - maggio 01, 2022

In questo tutorial vediamo come personalizzare il separatore decimale grazie a VBA verificando che ogni valore immesso sia un numero. Ogni valore sarà inserito in una nuova riga del foglio di lavoro Excel utilizzando un ciclo Do While. Utilizziamo questa tipologia di ciclo per verificare, come prima cosa, che la cella sia vuota per poi continuare o meno l'operazione di inserimento su una nuova riga del foglio di lavoro Excel.

Partiamo con il creare il nostro file Excel, abilitiamo la sezione Sviluppo e l'editor Visual Basic. Incolliamo il seguente codice:

Sub testInput()

    ' Variabili
    Dim num As Double
    Dim strNum As String
    Dim riga As Integer
    Dim colonna As Integer
    Dim continua As Boolean
    
    ' Imposta il separatore decimale
    Application.DecimalSeparator = ","
    Application.UseSystemSeparators = False
    
    ' Verifica che l'input immesso sia un numero
    strNum = InputBox(Prompt:="Inserisci il valore nella cella A1.")
    strNum = Replace(strNum, ".", Application.DecimalSeparator)
    Debug.Print (strNum)
    If IsNumeric(strNum) = True Then
        num = CDbl(strNum)
    Else
        num = 0
    End If
    
    ' Inserisce i valori uno dopo l'altro
    riga = 1
    colonna = 1
    
    Do
        If IsEmpty(Cells(riga, colonna)) Then
            Cells(riga, colonna).Value = num
            continua = False
        Else
            riga = riga + 1
            continua = True
        End If
         
    Loop While continua = True

End Sub

Avviando il codice, il programma vi chiederà di inserire un valore numerico che andrà poi ad inserirsi in una nuova riga del foglio di lavoro Excel. L'output sarà simile alla seguente immagine:

Cambiare il separatore decimale in VBA (Excel)

Notate i valori in fase di debug. Alcuni valori sono stati inseriti con il punto mentre altri con la virgola ma, in entrambi i casi, il valore viene correttamente inserito nella cella Excel con il separatore decimale che abbiamo impostato, ossia la virgola. Laddove, invece, il valore inserito non fosse un numero valido, viene semplicemente stampato uno zero. Impostando manualmente il separatore decimale abbiamo quindi il controllo completo sulla nostra applicazione ed eviteremo spiacevoli inconvenienti sia nei calcoli sia laddove l'utente dovesse usare impostazioni di cultura differenti.

Per maggiori informazioni vi invito anche a visionare la documentazione appropriata di Microsoft: Application.DecimalSeparator property (Excel)

Modifica del separatore decimale con VBA