Sostituzione e conversione in una macro

Saskia stava avendo un problema di conversione dati, sotto il controllo di una macro, e continua ad avere che sia utilizzabile in Excel. Quando lei avrebbe ricevuto un foglio di lavoro che ha mostrato i numeri formattati con punti decimali, avrebbe avuto bisogno di convertire i valori in modo da utilizzare le virgole decimali, in linea con quanto i numeri sono visualizzati in Olanda. Avrebbe fatto una ricerca e sostituzione, e tutto avrebbe funzionato bene. Tuttavia, quando si registra una macro che ha fatto la ricerca e sostituzione, le cellule risultanti sono state trattate come testo anziché come valori numerici.

La ragione di questo comportamento è che Excel VBA "parla" American, e alcune azioni fatto utilizzando una macro registrata non funzionano come previsto a causa di questo fatto. Perché americano Excel si aspetta che il separatore decimale sia un periodo, interpretando un "numero" in VBA con un altro separatore (ad esempio una virgola) causerà Excel a considerare il valore di essere testo.

La soluzione è non utilizzare trovare e sostituire, ma di usare un trucco diverso. Si consideri il seguente macro breve:

ConvertNumbers Sub ()
Dim oConRange come gamma
Set oConRange = ActiveSheet.UsedRange.Cells.SpecialCells (xlConstants)
oConRange.Value = oConRange.Value
End Sub

Questa macro definisce un intervallo che consiste di tutte le cellule che contengono costanti. Quindi, si imposta il valore di ogni cella nell'intervallo uguale a se stesso. Nel processo di fare questo, Excel rivede il contenuto di ogni cella e converte il valore numerico appropriato. In altre parole, i numeri che contengono decimali vengono convertite in numeri che contengono virgole decimali.

Ci sono altri modi per elaborare le cellule utilizzando una macro, ma la procedura di cui sopra sembra funzionare al meglio e il più veloce.

ExcelTips è la vostra fonte per la formazione Microsoft Excel conveniente. Questo suggerimento (12630) si applica a Microsoft Excel 2007, 2010 e 2013. Potete trovare una versione di questo suggerimento per l'interfaccia del menu precedente di Excel qui: Sostituzione e conversione in una macro.