/ / Telwoorden in Excel VBA

Tel woorden in Excel VBA

Hieronder zullen we een programma bekijken in Excel VBA dat telt het aantal woorden in een geselecteerd bereik. Er wordt aangenomen dat een of meer spaties woorden scheiden.

Situatie:

Tel woorden in Excel VBA

1. Eerst verklaren we twee Range-objecten en drie variabelen. We noemen de Range-objecten rng en cel. Eén integer-variabele noemen we cellWords, één integer-variabele die we totalWords noemen en één string-variabele die we content noemen.

Dim rng As Range, cell As Range
Dim cellWords, totalWords As Integer, content As String

2. We initialiseren het Range-object rng met het geselecteerde bereik en de twee variabelen van het type Integer met waarde 0.

Set rng = Selection
cellWords = 0
totalWords = 0

3. We willen elke cel in een willekeurig geselecteerd bereik controleren (dit bereik kan elke grootte hebben). In Excel VBA kunt u daarvoor de For Each Next-lus gebruiken. Voeg de volgende coderegels toe:

For Each cell In rng

Next cell

Opmerking: rng en cel worden hier willekeurig gekozen, je kunt elke naam gebruiken. Vergeet niet om deze namen in de rest van uw code te vermelden.

4. Vervolgens bepalen we voor elke cel in dit bereik hoeveel woorden het bevat. Als u een cel met een formule wilt negeren, voegt u de volgende coderegel toe tussen For Each en Next (alleen als cell.HasFormula false is, gaan we verder).

If Not cell.HasFormula Then

End If

5. Eerst schrijven we de inhoud van de cel naar de variabele inhoud. Vervolgens verwijderen we de spaties aan het begin en het einde (als die er zijn). In Excel VBA kunt u hiervoor de Trim-functie gebruiken. "Excel vba" wordt bijvoorbeeld geconverteerd naar "excel vba". Voeg de volgende coderegels toe aan uw If-instructie.

content = cell.Value
content = Trim(content)

Opmerking: de trimfunctie in Excel VBA verwijdert geen extra spaties tussen woorden, maar dat is OK in dit voorbeeld.

6. Op dit punt kan een cel nog steeds leeg zijn. Als de cel leeg is, wijzen we de waarde 0 toe aan de variabele celwoorden. Zo niet, dan bevat het ten minste één woord en kennen we de waarde 1 toe aan de variabele celwoorden. Voeg de volgende coderegels toe aan uw If-instructie.

If content = "" Then
    cellWords = 0
Else
    cellWords = 1
End If

Een cel kan natuurlijk meer dan één woord bevatten. Dat is precies wat we nu willen weten. Als voorbeeld nemen we: "excel vba". Als een cel in dit stadium ten minste één spatie bevat, bevat deze ten minste nog één woord. U kunt de Instr-functie gebruiken in Excel VBA om naar een spatie te zoeken Instr (content, "") vindt de positie van de eerste spatie in inhoud.

7. We zullen gebruik maken van de Do While Loop-structuur. De code die tussen deze woorden wordt geplaatst (in stap 8, 9 en 10) wordt herhaald zolang het gedeelte na Do While waar is. We willen deze stappen herhalen zolang Instr (content, "")> 0 waar is (zolang de inhoud een spatie bevat en dus meer woorden). Voeg de Do While Loop toe aan je If-statement.

Do While InStr(content, " ") > 0

Loop

8. Vervolgens nemen we het gedeelte content dat begint bij de positie van de eerste spatie. Hiervoor gebruiken we de functie Mid.

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

Bijvoorbeeld: Mid ("excel vba", InStr ("excel vba", "")) geeft "vba".

9. We snoeien de snaar opnieuw.

content = Trim(content)

Resultaat: "vba"

10. We verhogen cellWords met 1.

cellWords = cellWords + 1

This Do While Loop wordt zo lang herhaaldinhoud bevat een spatie en dus meer woorden. In ons voorbeeld verlaten we de Do While Loop omdat "vba" geen spatie meer bevat! Resultaat: deze cel bevat 2 woorden.

11. Nadat we één cel hebben gecontroleerd, voegen we cellWords toe aan de variabele totaalwoorden. Deze coderegel moet buiten de Do While Loop maar in de If-instructie worden geplaatst.

totalWords = totalWords + cellWords

Het hele proces begint opnieuw voor de volgende cel totdat alle cellen zijn gecontroleerd.

12. Ten slotte geven we de waarde van totalWords weer met een msgbox. Deze coderegel moet buiten de For Each Next-lus worden geplaatst.

MsgBox totalWords & " words found in the selected range."

13. Test het programma.

Resultaat:

Het resultaat van Count Words

Lees ook: