Questo sito utilizza cookie, anche di terze parti, per migliorare la tua esperienza e offrire servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina o cliccando qualunque suo elemento acconsenti all’uso dei cookie

Rimani informato sugli aggiornamenti di SOS-OFFICE. Inserisci il tuo indirizzo e-mail: Informativa sulla privacy

Chi lavora spesso con i dati, sa bene che è necessario gestire correttamente il loro formato. Ad esempio la funzione CERCA.VERT non funziona se i dati da confrontare non sono tutti dello stesso tipo, cioè tutti numeri o tutti testi. Oggi vogliamo proporvi delle semplici routine VBA per ottenere questo risultato. Allegato al post troverete un componente aggiuntivo che potete aggiungere al vostro Excel per avere sempre a disposizione questa funzionalità.

Il primo codice che vi propongo è molto semplice e si limita a convertire i numeri in testi.

Public Sub DaNumeriATesto()

Dim intervallo As Range
Dim cella As Range

Set intervallo = ActiveCell.CurrentRegion

For Each cella In intervallo
  cella = cella.Value & ""
Next


End Sub

La routine converte in testi tutti i numeri compresi nelle celle contigue a quella in cui si trova il mouse. La conversione è attuata semplicemente concatenando una stringa vuota ai valori già presenti nelle celle.

Se volessimo complicare un po' le cose e fare in modo che si possa anche scegliere di aggiungere degli zeri davanti al numero convertito in testo e scegliere se convertire l'intera selezione, la cella selezionata o tutte le celle contigue ad essa, potremmo ricorrere alle routine che seguono

Private Function numeroZeri() As String
Dim intZeri As Integer
Dim formato As String
Dim i As Integer

intZeri = Application.InputBox("Quante cifre?", Type:=1)

For i = 1 To intZeri
formato = formato & "0"
Next
numeroZeri = formato

End Function
 

Public Sub DaNumeroATesto()
Dim intervallo As Range
Dim cella As Range
Dim strValore As String
Dim zeri As String
Dim intrisposta As Integer
Dim intervalloSelezionato As Range
Dim intersezione As Range


Set intervallo = Selection


If Selection.Address <> ActiveCell.CurrentRegion.Address Then
intrisposta = MsgBox("Vuoi espandere la selezione?", vbYesNoCancel, "Attenzione")
Select Case intrisposta

Case vbYes
Set intervallo = ActiveCell.CurrentRegion
Case vbNo
Set intervallo = Selection
End Select
End If

zeri = numeroZeri
For Each cella In intervallo

strValore = "'" & Format(cella.Value, zeri)
cella = strValore

Next

End Sub

La funzione numeroZeri chiede all'utente di quante cifre si deve comporre il numero convertito e quindi compone una stringa costituita da tanti zeri quante sono le cifre necessarie. Questa stringa sarà poi utilizzata dalla funzione Format usata nella Sub DaNumeroATesto per effettuare la conversione. Questa funzione converte un numero in un testo col il formato specificato. La stringa composta nella funzione numeroZeri serve proprio per specificare il formato. Ogni zero sta per una cifra obbligatoria. Se nel numero da convertire non sono presenti cifre sufficienti si aggiungono zeri a sinistra fino a raggiungere il numero necessario di cifre.

L'operazione di conversione inversa, cioè da testo a Numero è più semplice. Basta una semplice moltiplicazione per 1.

Public Sub DaTestoANumero()

Dim intervallo As Range
Dim cella As Range
Dim strValore As String
Dim zeri As String
Dim intrisposta As Integer

On Error GoTo Errore
Set intervallo = Selection

 

If Selection.Address <> ActiveCell.CurrentRegion.Address Then
intrisposta = MsgBox("Vuoi espandere la selezione?", vbYesNoCancel, "Attenzione")
Select Case intrisposta

Case vbYes
Set intervallo = ActiveCell.CurrentRegion
Case vbNo
Set intervallo = Selection
End Select
End If

For Each cella In intervallo
cella = cella * 1

Next
Exit Sub

Errore: MsgBox "non è possibile effettuare a conversione"

End Sub

Come installare un componente aggiuntivo?

Per concludere vi ricordo come installare il componente aggiuntivo fornito in questo articolo. Nella scheda Sviluppo, scegliete Componenti aggiuntivi di Excel, quindi nella nuova finestra scegliete Sfoglia ed individuate il file del componente aggiuntivo. Il componente aggiuntivo verrà aggiunto alla finestra (si chiama Conversioni) e sarà selezionato.

Una volta installato il componente aggiuntivo, vedrete nella scheda Dati, i pulsanti per lanciare le routine di conversione

NOTA BENE Il codice è fornito così come è. Non ci assumiamo nessuna responsabilità sui danni eventualmente derivanti dal suo utilizzo che avviene comunque sempre a rischio e pericolo dell'utente.

 

Attachments:
Download this file (Conversioni.xlam)Conversioni.xlam[ ]169 kB
Joomla templates by a4joomla