Di seguito vedremo un programma in Excel VBA che conta il numero di parole in un intervallo selezionato. Uno o più spazi si presume per separare le parole.

Situazione:

Count Words in Excel VBA

  1. In primo luogo, dichiarare due oggetti Range e tre variabili. Chiamiamo la gamma di oggetti RNG e delle cellule. Una variabile intera che noi chiamiamo cellWords, una variabile Integer che chiamiamo totalWords, e una variabile String che chiamiamo contenuti.

Dim rng As Range, cell As Range

Dim cellWords, totalWords As Integer, content As String
  1. inizializzare il RNG oggetto Range con l’intervallo selezionato e le due variabili di tipo Integer con valore 0.

Set rng = Selection

cellWords = 0

totalWords = 0
  1. vogliamo controllare ogni cella in un intervallo selezionato casualmente (questo intervallo può essere di qualsiasi dimensione). In Excel VBA, è possibile utilizzare il ciclo For Each di questo componente. Aggiungere le seguenti righe di codice:

For Each cell In rng

Next cell

Nota: RNG e cellule sono scelti a caso qui, è possibile utilizzare qualsiasi nome.

Ricordarsi di fare riferimento a questi nomi nel resto del codice.

  1. Successivamente, determiniamo per ogni cella in questa fascia di quante parole che contiene. Per ignorare una cella che contiene una formula, aggiungere la seguente riga di codice tra For Each e Next (solo se è falso cell.HasFormula continuiamo).

If Not cell.HasFormula Then

End If
  1. In primo luogo, abbiamo scrivere il contenuto della cella al contenuto variabile.

Successivamente, abbiamo rimuovere gli spazi all’inizio e alla fine (se ce ne sono). In Excel VBA, è possibile utilizzare la funzione Trim per questo. Ad esempio, “di Excel VBA” verrà convertito in “di Excel VBA”. Aggiungere le seguenti righe di codice nel vostro If.

content = cell.Value

content = Trim(content)

Nota: la funzione trim in Excel VBA non rimuovere gli spazi aggiuntivi tra le parole, ma va bene in questo esempio.

  1. A questo punto, una cella può essere ancora vuota. Se la cella è vuota, si assegna il valore 0 per le cellWords variabili. Altrimenti, contiene almeno una parola e si assegna il valore 1 al cellWords variabili. Aggiungere le seguenti righe di codice nel vostro If.

If content = "" Then

cellWords = 0

Else

cellWords = 1

End If

Una cella può contenere più di una parola, naturalmente. Questo è esattamente quello che vogliamo sapere ora. Come esempio prendiamo: “VBA di Excel”. Se una cella contiene almeno uno spazio in questa fase, che contiene almeno una parola in più. È possibile utilizzare la funzione Instr in Excel VBA per cercare uno spazio.

Instr (contenuto, ” “) rileva la posizione del primo spazio contenuto.

  1. Faremo uso del ciclo Do While struttura. Codice collocato tra queste parole (al punto 8, 9 e 10) si ripeterà finché la parte dopo Do Mentre è vero. Vogliamo ripetere la procedura finché Instr (contenuto, ” “)> 0 è vero (a patto che il contenuto contiene uno spazio e quindi più parole). Aggiungere il ciclo Do While nella sua dichiarazione If.

Do While InStr(content, " ") > 0

Loop
  1. Successivamente, prendiamo la parte iniziale contenuto nella posizione del primo spazio. Usiamo la funzione Mid per questo.

content = Mid(content, InStr(content, " "))

Per esempio: Mid ( “di Excel VBA”, InStr ( “di Excel VBA”, ” “)) darà” VBA”.

  1. Noi pareggiamo di nuovo la stringa.

content = Trim(content)

Risultato: “VBA”

  1. cellWords viene incrementato di 1.

cellWords = cellWords + 1

Questo ciclo Do While sarà ripetuto finché il contenuto contiene uno spazio e quindi più parole. Nel nostro esempio, si esce dal ciclo Do While dal “VBA” non contiene più spazio! Risultato: questa cella contiene 2 parole.

  1. Dopo aver verificato una cella, aggiungiamo cellWords alle totalWords variabili. Questa linea di codice deve essere inserito al di fuori del ciclo Do While ma nel If.

totalWords = totalWords + cellWords

L’intero processo riparte per la cella successiva fino a quando tutte le celle sono stati controllati.

  1. Infine, visualizzare il valore di totalWords usando un msgbox. Questa linea codice deve essere posizionato all’esterno del ciclo For Each successivo.

MsgBox totalWords & " words found in the selected range."
  1. Test del programma.

Risultato:

Count Words result