/ / Цоунт Вордс у Екцел ВБА

Број ријечи у Екцелу ВБА

У наставку ћемо погледати програм Екцел ВБА то броји број речи у изабраном опсегу. Претпоставља се да се један или више простора разликују.

Ситуација:

Број ријечи у Екцелу ВБА

1. Прво, објављујемо два опсег објекта и три варијабле. Ми зовемо објекте Ранге и рнг. Једна варијабла интегер коју зовемо целлВордс, једна интегер варијабла коју зовемо тоталВордс, и једну варијаблу Стринга коју зовемо садржајима.

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

2. Иницијализирамо Ранге објецт рнг са изабраним опсегом и две варијабле типа Интегер са вриједношћу 0.

Set rng = Selection
cellWords = 0
totalWords = 0

3. Желимо да проверимо сваку ћелију у насумично одабраном опсегу (овај опсег може бити било које величине). У Екцел-у ВБА, за ово можете користити петље за сваки наредни следећи. Додајте следеће линије кода:

For Each cell In rng

Next cell

Напомена: рнг и целл су случајно изабрани овде, можете користити било која имена. Не заборавите да се позовете на ова имена у остатку вашег кода.

4. Затим, за сваку ћелију у овом опсегу одређујемо колико ријечи садржи. Да игноришемо ћелију која садржи формулу, додајте следећу линију кода између За сваку и следећу (само ако је целл.ХасФормула погрешно настављамо).

If Not cell.HasFormula Then

End If

5. Прво, пишемо садржај ћелије на варијабилни садржај. Затим уклонимо просторе на почетку и крају (ако их има). У Екцел ВБА можете користити функцију Трим за ово. На пример, "екцел вба" биће претворен у "екцел вба". Додајте следеће линијске кодове у изјави Иф.

content = cell.Value
content = Trim(content)

Напомена: трим функција у програму Екцел ВБА не уклања додатне размаке између речи, али је то у реду у овом примеру.

6. У овом тренутку, ћелија и даље може бити празна. Ако је ћелија празна, додељујемо вредност 0 променљивој ћелији АдВордс. У супротном, садржи најмање једну реч и додијелимо вриједност 1 променљивој ћелијски ријечи. Додајте следеће линијске кодове у изјави Иф.

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

Ћелија може садржати више од једне ријечи, наравно. То је управо оно што желимо да сазнамо сада, као пример узимамо: "екцел вба". Ако ћелија садржи најмање један простор у овој фази, она садржи бар још једну реч. Екцел ВБА тражи простор. Инстр (садржај, "") налази положај првог простора у садржају.

7. Користићемо структуру До Вхиле Лооп. Код који се налази између ових речи (у корацима 8, 9 и 10) биће поновљен све док је део после До Вхиле ис труе. Желимо да поновимо ове кораке све док је Инстр (садржај, "")> 0 истинито (све док садржај садржи простор, а тиме и више речи). Додајте До Вхиле Лооп у изјави Иф.

Do While InStr(content, " ") > 0

Loop

8. Даље, узимамо део садржаја који почиње на позицији првог простора. Ми користимо функцију Мид за ово.

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

На пример: Мид ("екцел вба", ИнСтр ("екцел вба", "")) дати ће "вба".

9. Поново успоравамо стринг.

content = Trim(content)

Резултат: "ВБА"

10. Повећавамо целовите језике за 1.

cellWords = cellWords + 1

Ово До Лооп ће се поновити дугосадржај садржи простор и стога више речи. У нашем примеру излазимо из циклуса До Вхиле Лооп, јер вба не садржи више простора! Резултат: ова ћелија садржи 2 речи.

11. Након што смо проверили једну ћелију, додамо читав програм АдВордс на варијаблу тоталВордс. Ова линија кода би требало да буде постављена изван До Вхиле Лооп-а, али у изјави Иф.

totalWords = totalWords + cellWords

Цео процес почиње поново за следећу ћелију све док се не провери све ћелије.

12. На крају, приказујемо вредност свих АдВордс-а користећи мсгбок. Ова линија кода треба поставити изван петље За сваки наредни.

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

13. Тестирајте програм.

Резултат:

Број ријечи резултира

Такође прочитајте: