La Funzione Trim - precisazioni    (23/06/03)

Abbiamo già visto, nell'articolo "Funzioni Stringa" in questa sezione, come lavora la funzione TRIM.

La Funzione Trim serve per rendere un valore stringa (cioè del testo) SENZA spazi iniziali o finali (con le Funzioni Trim non vengono eliminati gli spazi "intermedi" ).
Cioè se in una cella ci troviamo con una stringa tipo:

     Procopio     Lacustre

applicando la funzione Trim ci troveremmo ad aver eliminato gli spazi prima di Procopio e dopo Lacustre, MA non avremmo eliminato gli spazi tra Procopio e Lacustre, ed avremo:

Procopio     Lacustre

E fin qui niente di nuovo, sotto il sole. Ma la funzione TRIM possiede una sorella gemella che corrisponde all'italiano ANNULLA.SPAZI . Anche qui niente di nuovo; quasi tutte le funzioni disponibili (in italiano) sul foglio di lavoro, hanno le corrispondenti funzioni in inglese da usare con il codice vba, e viceversa.

Solo che la funzione Annulla.Spazi fà qualcosa di diverso dalla sorella Trim. Leggiamo cosa dice la guida in linea in merito alla funzione Annulla.Spazi :

"Rimuove tutti gli spazi dal testo ad eccezione dei singoli spazi tra le parole. Utilizzare la funzione ANNULLA.SPAZI sul testo creato con altre applicazioni che può presentare una distribuzione irregolare degli spazi."
Quel "singoli" è la chiave che differenzia le due funzioni, che dovrebbero operare in uguale maniera, ma se si adopera la funzione Annulla.Spazi, la frase sopra diventa così:

Procopio Lacustre

Anche un sordo nota che in questo caso sono stati eliminati tutti gli spazi vuoti, tranne uno tra Procopio e Lacustre. E questo alla faccia di noi "pellegrini" che troppo spesso diamo per scontato che le cose simili si comportino similmente, o quanto meno erriamo nel considerarle uguali.

In realtà le due funzioni devono essere usate con modalità diverse. La funzione Trim, via codice, ci consente di modificare il testo contenuto in una cella, AGENDO direttamente sulla cella stessa, esempio:

Sub miaElido()
Range("A1") = Trim(Range("A1"))
End Sub

In questo caso verranno eliminati solo gli spazi iniziali e finali, ma non intermedi, e lo facciamo direttamente nella cella stessa. Per vederla lavorare come lavora Annulla.Spazi, la funzione Trim va trasformata in FORMULA.

Come tale, però, non potrà essere inserita nella stessa cella che si vuole "trimmare" (si genera un errore di tipo "riferimento circolare") ma dovremo usare un'altra cella per ospitare la cella "trimmata", così.

Sub miaElidos()
Range("A2").Formula = "=TRIM(A1)"
End Sub

Ed avremo in A2 il nome senza spazi tranne lo spazio tra le due parole. Mi sembrava doveroso far notare le diversità nell'uso che si fa della stessa funzione, italiana o inglese che sia.


Buon lavoro.


prelevato sul sito http://ennius.interfree.it