Tell ord i Excel VBA - Enkle Excel -makroer

Innholdsfortegnelse

Nedenfor ser vi på et program i Excel VBA at teller antall ord i et valgt område. Et eller flere mellomrom antas å skille ord.

Situasjon:

1. Først erklærer vi to Range -objekter og tre variabler. Vi kaller Range -objektene rng og cell. En heltallsvariabel kaller vi cellWords, en heltallsvariabel kaller vi totalWords, og en strengvariabel kaller vi innhold.

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

2. Vi initialiserer Range -objektet rng med det valgte området og de to variablene av typen Heltall med verdi 0.

Sett rng = Valg
cellWords = 0
totalWords = 0

3. Vi ønsker å kontrollere hver celle i et tilfeldig valgt område (dette området kan være av hvilken som helst størrelse). I Excel VBA kan du bruke For Every Next loop for dette. Legg til følgende kodelinjer:

For hver celle I rng
Neste celle

Merk: rng og celle velges tilfeldig her, du kan bruke alle navn. Husk å referere til disse navnene i resten av koden.

4. Deretter bestemmer vi for hver celle i dette området hvor mange ord den inneholder. For å ignorere en celle som inneholder en formel, legger du til følgende kodelinje mellom For Hver og Neste (bare hvis cell.HasFormula er falsk fortsetter vi).

Hvis ikke celle. Har formel
Slutt om

5. Først skriver vi innholdet i cellen til det variable innholdet. Deretter fjerner vi mellomrommene i begynnelsen og slutten (hvis det er noen). I Excel VBA kan du bruke Trim -funksjonen til dette. For eksempel blir "excel vba" konvertert til "excel vba". Legg til følgende kodelinjer i If -setningen.

innhold = celle. verdi
innhold = Trim (innhold)

Merk: trimfunksjonen i Excel VBA fjerner ikke ekstra mellomrom mellom ord, men det er OK i dette eksemplet.

6. På dette tidspunktet kan en celle fortsatt være tom. Hvis cellen er tom, tilordner vi verdien 0 til variabelen cellWords. Hvis ikke, inneholder det minst ett ord, og vi tildeler verdien 1 til variabelen cellWords. Legg til følgende kodelinjer i If -setningen.

Hvis innhold = "" Da
cellWords = 0
Ellers
cellWords = 1
Slutt om

En celle kan selvfølgelig inneholde mer enn ett ord. Det er akkurat det vi ønsker å finne ut nå. Som et eksempel tar vi: "excel vba". Hvis en celle inneholder minst ett mellomrom på dette stadiet, inneholder den minst ett ord til. Du kan bruke Instr -funksjonen i Excel VBA til å lete etter et mellomrom. Instr (innhold, "") finner posisjonen til det første rommet i innholdet.

7. Vi vil gjøre bruk av Do While Loop -strukturen. Koden plassert mellom disse ordene (i trinn 8, 9 og 10) vil gjentas så lenge delen etter Do While er sann. Vi ønsker å gjenta disse trinnene så lenge Instr (innhold, "")> 0 er sant (så lenge innholdet inneholder et mellomrom og dermed flere ord). Legg til Do While Loop i If -setningen.

Do While InStr (innhold, "")> 0
Løkke

8. Deretter tar vi delen av innholdet som starter ved posisjonen til det første rommet. Vi bruker Mid -funksjonen til dette.

innhold = Midt (innhold, InStr (innhold, ""))

For eksempel: Mid ("excel vba", InStr ("excel vba", "")) vil gi "vba".

9. Vi trimmer snoren igjen.

innhold = Trim (innhold)

Resultat: "vba"

10. Vi øker cellWords med 1.

cellWords = cellWords + 1

Denne Do While Loop vil gjentas så lenge innholdet inneholder et mellomrom og dermed flere ord. I vårt eksempel avslutter vi Do While Loop siden "vba" ikke inneholder et mellomrom lenger! Resultat: denne cellen inneholder 2 ord.

11. Etter å ha sjekket en celle, legger vi til cellWords i variabelen totalWords. Denne kodelinjen bør plasseres utenfor Do While Loop, men i If -setningen.

totalWords = totalWords + cellWords

Hele prosessen starter på nytt for den neste cellen til alle cellene er sjekket.

12. Til slutt viser vi verdien av totalWords ved hjelp av en meldingsboks. Denne kodelinjen bør plasseres utenfor For Every Next -løkken.

MsgBox totalWords & "ord funnet i det valgte området."

13. Test programmet.

Resultat:

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave