3 funzioni VBA che cambieranno il tuo modo di lavorare con le stringhe

Impara a gestire e manipolare i dati come un vero esperto

La tua SCUOLA DI EXCEL

NOVITA’

Corso Excel Avanzato

Il corso avrà inizio il giorno mercoledì 15 gennaio 2025 alle ore 18:00. Le lezioni, della durata di 2 ore, avranno cadenza settimanale.

Sconto del 15% per chi prenota entro il 31/12/2024,

Utilizza il codice sconto

 AVANZATO15

Centinaia di Trucchi e Suggerimenti per le tue necessità quotidiane

Il tuo Corso di Excel VBA. Le prime 4 lezioni GRATIS

LINK UTILI

ExcelMinds

Non lasciare che le nostre mail finiscano nella cartella dello SPAM
Aggiungi l’indirizzo del mittente ai tuoi contatti

CITAZIONE DELLA SETTIMANA

La conoscenza comincia dal coraggio della propria ignoranza.

Pino Caruso

CONTENUTI AREA PREMIUM

Attualmente l’AREA PREMIUM include i seguenti contenuti:

  • 168 Tips and Tricks

  • 91 Formule avanzate spiegate passo-passo

  • 12 Templates pronti all’uso

  • 651 Esempi di Codice VBA e macro su casi reali

  • 34 Brevi Tutorial VBA

Ti ricordo lo sconto del 10% 

sull’abbonamento all’AREA PREMIUM*

(codice sconto NEWS10)

*Valido anche per l’Abbonamento Annuale, già notevolmente scontato

Manipolare le stringhe in VBA

La scorsa settimana abbiamo parlato degli array e descritto come dichiararli e iterarli. Potresti ricordare che abbiamo accennato brevemente a una funzione di manipolazione delle stringhe nell'esempio di "mucca, cavallo, pecora". Oggi approfondiremo le stringhe, un elemento essenziale per la manipolazione dei dati.

Descriveremo i diversi tipi di stringhe e ci concentreremo su tre funzioni utili per gestire le sottostringhe. Quando parliamo di sottostringhe, intendiamo una porzione più piccola di una stringa principale. Ad esempio, "auto" è una sottostringa della stringa "automobile".

Due tipi di stringhe in VBA

Una stringa è essenzialmente una sequenza di caratteri. In VBA esistono due tipi di stringhe: a lunghezza fissa e a lunghezza variabile.

  • Stringhe a lunghezza fissa: vengono definite con un asterisco (*) seguito da un numero. La lunghezza massima è di 65.536 caratteri.

Dim miaStringa As String * 5
  • Stringhe a lunghezza variabile: sono memorizzate in Unicode e possono contenere più di 2 miliardi di caratteri.

Dim miaStringa As String * 5 ' Fissa 
Dim miaStringaLunga As String ' Variabile 
miaStringa = "Modificami." 
miaStringaLunga = "Modificami."

In questo esempio, la stringa a lunghezza fissa viene troncata in “Modif” perché è limitata a cinque caratteri, mentre la stringa a lunghezza variabile contiene l’intero testo “Modificami.” in quanto non ha restrizioni in merito alla lunghezza.

È possibile manipolare le stringhe con una serie di funzioni di manipolazione. VBA ha molte funzioni di manipolazione delle stringhe, ma in questa lezione descriveremo alcune delle più comuni.

Concatenare le stringhe con l'operatore &

In VBA, si concatenano le stringhe in un'unica stringa utilizzando l'operatore &, o e commerciale. "Concatenare" è solo un modo elegante per dire "combinare" o "unire". Questa non è una cosa solo di VBA. La parola “concatenare” è utilizzata in quasi tutti i linguaggi di programmazione. Quando concateni le stringhe, le unisci insieme in un'unica stringa.

Dim str1 As String
Dim str2 As String
Dim strUnita As String

str1 = "C'era una volta "
str2 = "un castello."
strUnita = str1 & str2
' Il risultato è "C'era una volta un castello."

CONTINUA »

Excel VBA Masterclass

Vuoi imparare a sfruttare al massimo il potenziale di Excel?

Il corso di VBA per Excel che ti presentiamo ti insegnerà come automatizzare le tue attività lavorative e risparmiare tempo prezioso. Imparerai a creare strumenti di lavoro personalizzati e adattati alle tue esigenze, grazie alle funzionalità avanzate di Excel.

VBA Masterclass è un corso a dispense con rilascio settimanale.

Al momento è composta da 52 dispense per oltre 1.800 pagine, ma contiamo di implementarlo ancora. Ogni settimana al partecipante vengono rilasciate una o più dispense accompagnate da alcuni file di supporto.

Inoltre, sempre ogni settimana, il partecipante potrà cimentarsi in un breve test per verificare la comprensione dei concetti illustrati nelle dispense.

13 di queste 52 dispense sono per così dire "riepilogative": propongono un ripasso di alcuni argomenti trattati nelle dispense precedenti in quanto questi concetti vengono utilizzati per creare delle applicazioni. Tali progetti pratici sono completamente guidati.

Al termine del percorso, il partecipante potrà cimentarsi in un vero e proprio esame finale il cui superamento permette il download dell'attestato formativo. Il percorso completo, al momento, dura 43 settimane.

È chiaro che sarebbe impossibile ottenere la stessa mole di informazioni con un corso live tradizionale. Probabilmente occorrerebbero più di 100 ore di formazione.

Le prime 4 lezioni GRATIS!

Non lasciarti sfuggire questa opportunità unica di diventare un vero maestro di Excel VBA!

Al momento il corso include:

  • 52 dispense

  • 1.839 pagine

  • oltre 350 immagini esplicative

  • oltre 360 snippet di codice VBA

  • 13 progetti pratici completamente guidati

  • 112 file Excel scaricabili con il codice e/o i programmi illustrati nelle dispense

  • 52 momenti di esercitazione e di test

Sostituire il testo in una stringa

La funzione Replace di VBA consente di sostituire una sottostringa di caratteri con un'altra stringa all'interno di una stringa principale. È simile alla funzione SOSTITUISCI di Excel. Ecco un esempio:

Dim str1 As String
str1 = "Uno, due, tre, quattro"
str1 = Replace(str1, "tre", "cinque")
' Risultato: "Uno, due, cinque, quattro"

Sebbene nell'esempio precedente abbiamo utilizzato solo 3 argomenti, la funzione Replace di VBA accetta in realtà 6 argomenti. Ciascuno degli argomenti è descritto nella tabella seguente:

Replace( Expression, Find, Replace, [Start], [Count], [Compare] )

  • Expression: la stringa originale in cui desideri sostituire i caratteri.

  • Find: la sottostringa che desideri trovare all'interno di Expression. Questa sarà la stringa rimossa dalla tua Expression.

  • Replace: quello che vuoi sostituire alla stringa trovata. Questa sarà la stringa aggiunta alla tua Expression.

  • Start (facoltativo): il punto di Expression in cui desideri iniziare a cercare e sostituire. Il valore predefinito è 1, che quindi inizia dal primo carattere.

  • Count (facoltativo): il numero di sostituzioni che desideri effettuare. Se sono presenti più istanze della sottostringa Find, ne sostituirà solo quante ne definisci in questo argomento. L'impostazione predefinita prevede la sostituzione di tutte le istanze.

  • Compare (facoltativo): specifica il metodo di confronto da utilizzare. Le opzioni sono vbBinaryCompare (impostazione predefinita), vbDatabaseCompare e vbTextCompare. Utilizzerai raramente questa opzione, quindi non è necessario rimanere troppo presi da ciascuna di queste scelte. L'impostazione predefinita di solito va bene.

Trovare una sottostringa in una stringa

Per verificare se una sottostringa è in una stringa con VBA, puoi utilizzare la funzione InStr. La funzione VBA InStr è una delle funzioni di manipolazione delle stringhe più utili in circolazione. Puoi usarla per verificare se una stringa, cella o intervallo contiene la sottostringa che desideri trovare. In tal caso, "InStr" restituirà la posizione nella stringa di testo in cui inizia la sottostringa. Questo è ottimo se stai scorrendo un file o un foglio di calcolo e desideri eseguire un'azione quando trovi una stringa corrispondente.

Mi piace descrivere la funzione InStr come “trovare l'ago nel pagliaio”. Il pagliaio è la stringa che inserisci per prima e l'ago è la sottostringa che vuoi trovare. La funzione restituisce la posizione del primo carattere in base 1 (che inizia a contare da 1) dell'ago nel pagliaio. Restituisce 0 se l'ago non viene trovato.

Dim posizione As Integer

posizione = InStr(1, "Cercare nel testo", "testo")
' Risultato: 13

La funzione VBA InStr accetta 4 argomenti, 2 dei quali sono facoltativi:

InStr( [Start], String1, String2, [Compare] )

  • Start (facoltativo): questa è la posizione (intero positivo) da cui si desidera iniziare la ricerca. Se omesso, assume il valore predefinito di 1. Un valore inferiore o uguale a 0 restituisce un errore.

  • String1: la stringa all'interno della quale desideri effettuare la ricerca. Vuoi cercare String2 all'interno di String1.

  • String2: la sottostringa che desideri cercare. Vuoi cercare String2 all'interno di String1.

  • Compare (facoltativo): indica a VBA quale algoritmo utilizzare durante il confronto. Ci sono tre scelte possibili: vbBinaryCompare [Default], vbDatabaseCompare, vbTextCompare.

Estrarre una sottostringa da una stringa

L'ultima funzione di manipolazione delle stringhe che descriverò in questa lezione è la funzione VBA Mid. Puoi controllare la funzione Mid passandole una stringa e due numeri interi che definiscono dove vuoi "tagliare" una sottostringa dalla stringa principale. La funzione Mid è meglio spiegata con un esempio:

Dim str1 As String
Dim str2 As String

str1 = "abc-123-xyz"
str2 = Mid(str1, 5, 3)
' Risultato: "123"

Questo pezzo di codice indica alla funzione Mid di estrarre 3 caratteri da str1, iniziando dal quinto carattere. Ecco perché estrae la sottostringa "123" e la memorizza nella variabile str2.

Ecco il formato generale della funzione Mid:

Mid( Str, Start, [Length] )

  • Str: la stringa da cui vuoi estrarre la sottostringa.

  • Start: la posizione iniziale da cui vuoi iniziare a estrarre la sottostringa. Questo è un tipo di dati intero (lungo). La numerazione inizia da 1 con il primo carattere della stringa.

  • Lenght (facoltativo): il numero di caratteri che desideri estrarre dalla stringa principale. Questo argomento è facoltativo. Omettendo l'argomento Lenght verrà estratto il resto della sottostringa a partire dal carattere definito nel 2° argomento.

Cosa puoi fare di più con le stringhe?

Le stringhe VBA sono un argomento molto vasto. Possiamo ammettere con certezza che abbiamo appena scalfito la superficie di ciò che puoi fare con esse. Concentrandomi sulle funzioni utilizzate per manipolare le sottostringhe in una stringa, ti ho mostrato come manipolare i tuoi dati usando VBA.

Arrivederci a presto!

Simone (aka Somebooks)
Excel Academy

Informazioni sull'iscrizione alla newsletter: la newsletter di Excel Academy verrà recapitata solo a chi si è iscritto. Se ti è stata inoltrata e in futuro vuoi avere la tua copia, ti invitiamo a visitare questa pagina ed iscriverti.

Se desideri condividere questa newsletter con altri:

  1. Inoltra questa newsletter via e-mail, ma prima elimina il link per la cancellazione in fondo, in modo da non essere accidentalmente cancellato

  2. Chiedi al tuo amico/collega di visitare Excel Academy 

  3. Inserisci un link al sito di Excel Academy nella newsletter aziendale o nel tuo sito web.