Woorden tellen in Excel VBA - Eenvoudige Excel-macro's

Inhoudsopgave

Hieronder zullen we kijken naar een programma in Excel VBA Dat telt het aantal woorden in een geselecteerd bereik. Een of meer spaties worden verondersteld om woorden te scheiden.

Situatie:

1. Eerst declareren 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 noemen we totalWords en één String-variabele noemen we inhoud.

Dim rng As Range, cel As Range
Dim cellWords, totalWords As Integer, inhoud As String

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

Stel rng = Selectie in
celWoorden = 0
totaalWoorden = 0

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

Voor elke cel In rng
Volgende cel

Opmerking: rng en cel worden hier willekeurig gekozen, u kunt alle namen gebruiken. Vergeet niet om naar deze namen te verwijzen in de rest van uw code.

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

Indien niet cel.HeeftFormule Dan
Stop als

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. Bijvoorbeeld, "excel vba" wordt geconverteerd naar "excel vba". Voeg de volgende coderegels toe aan uw If-instructie.

inhoud = cel. Waarde
inhoud = Trim(inhoud)

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

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

Als inhoud = "" Dan
celWoorden = 0
Anders
celWoorden = 1
Stop als

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 één extra woord. U kunt de Instr-functie in Excel VBA gebruiken om naar een spatie te zoeken. Instr(content, " ") vindt de positie van de eerste spatie in de inhoud.

7. We zullen gebruik maken van de Do While Loop-structuur. Code die tussen deze woorden wordt geplaatst (bij 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 en dus meer woorden bevat). Voeg de Do While Loop toe aan je If-statement.

Do While InStr(content, " ") > 0
Lus

8. Vervolgens nemen we het deel van de inhoud dat begint op de positie van de eerste spatie. Hiervoor gebruiken we de functie Mid.

inhoud = Mid(inhoud, InStr(inhoud, " "))

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

9. We knippen de snaar weer af.

inhoud = Trim(inhoud)

Resultaat: "vba"

10. We verhogen cellWords met 1.

celWoorden = celWoorden + 1

Deze Do While Loop wordt herhaald zolang de inhoud een spatie bevat 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 aangevinkt, voegen we cellWords toe aan de variabele totalWords. Deze coderegel moet buiten de Do While Loop worden geplaatst, maar in de If-instructie.

totaalWoorden = totaalWoorden + celWoorden

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 behulp van een msgbox. Deze coderegel moet buiten de For Each Next-lus worden geplaatst.

MsgBox totalWords & "woorden gevonden in het geselecteerde bereik."

13. Test het programma.

Resultaat:

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave