Ниже мы рассмотрим программу в Excel VBA, которая подсчитывает количество слов в выбранном диапазоне. Один или более пространства предполагаются отдельные слова.

Ситуация:

Count Words in Excel VBA

  1. Во-первых, мы объявляем два объекта Range и три переменные. Мы называем объекты Диапазон ГСЧ и клетки. Одна переменная Integer мы называем cellWords, одна переменная Integer мы называем totalWords, и одна переменная строка, которую мы называем содержание.

Dim rng As Range, cell As Range

Dim cellWords, totalWords As Integer, content As String
  1. Мы инициализируем объект ГСЧ Range с выбранным диапазоном и две переменные типа Integer со значением 0.

Set rng = Selection

cellWords = 0

totalWords = 0
  1. Мы хотим, чтобы проверить каждую ячейку в случайно выбранном диапазоне (этот диапазон может быть любого размера). В Excel VBA, вы можете использовать для каждого следующего цикла для этого. Добавьте следующие строки кода:

For Each cell In rng

Next cell

Примечание: RNG и клетки случайным образом выбраны здесь, вы можете использовать любые имена.

Не забывайте ссылаться на эти имена в остальной части кода.

  1. Далее, мы определяем для каждой ячейки в этом диапазоне, сколько слов он содержит. Для того, чтобы игнорировать ячейку, содержащую формулу, добавьте следующую строку кода между For Each и Next (только если cell.HasFormula ложно мы продолжаем).

If Not cell.HasFormula Then

End If
  1. Во-первых, мы записываем содержимое ячейки с переменной содержанием.

Далее мы удаляем пробелы в начале и в конце (если таковые имеются). В Excel VBA, вы можете использовать функции подрезки для этого. Например, «Excel VBA» будет преобразован в «Excel VBA». Добавьте следующие строки кода в вашем заявлении If.

content = cell.Value

content = Trim(content)

Примечание: триммер функция в Excel VBA не удаляет лишние пробелы между словами, но это нормально в этом примере.

  1. На этом этапе клетка еще может быть пустой. Если ячейка пуста, то присвоить значение 0 для переменной cellWords. Если нет, то она содержит по крайней мере одно слово, и мы присваиваем значение 1 к переменной cellWords. Добавьте следующие строки кода в вашем заявлении If.

If content = "" Then

cellWords = 0

Else

cellWords = 1

End If

Ячейка может содержать более одного слова, конечно. Это именно то, что мы хотим, чтобы выяснить, в настоящее время. В качестве примера мы возьмем: «Excel VBA». Если ячейка содержит, по меньшей мере, одно место на данном этапе, она содержит, по крайней мере, еще одно слово. Вы можете использовать функцию Instr в Excel VBA искать пространства.

Instr (содержание «,«) находит позицию первого места содержания.

  1. Мы будем использовать в Do While Loop структуры. Код помещается между этими словами (на шаге 8, 9 и 10) будут повторяться до тех пор, как часть после Do While верно. Мы хотим повторить эти шаги, пока Instr (содержание, ««)> 0 верно (если содержание содержит пробел и, таким образом, больше слов). Добавьте Do While Loop в своем заявлении If.

Do While InStr(content, " ") > 0

Loop
  1. Далее мы берем часть исходного содержания в позиции первого пробела. Мы используем функцию Mid для этого.

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

Например: Mid ( «Excel VBA», InStr ( «Excel VBA», » «)) даст» VBA».

  1. Мы снова обрезать строку.

content = Trim(content)

Результат: «VBA»

  1. Мы приращения cellWords на 1.

cellWords = cellWords + 1

Это Do While Loop будет повторяться до тех пор, как содержание содержит пробел и, таким образом, больше слов. В нашем примере, мы выходим из Do While Loop, поскольку «VBA» не содержит пространство больше! Результат: эта ячейка содержит 2 слова.

  1. После проверки на одну ячейку, мы добавим cellWords к переменной totalWords. Эта строка кода должна располагаться снаружи Do While Loop, но в If заявлении.

totalWords = totalWords + cellWords

Весь процесс начинается снова для следующей ячейки, пока все клетки не были проверены.

  1. И, наконец, мы выводим значение totalWords с помощью MsgBox. Этот код строка должна быть размещена снаружи Для каждого следующего цикла.

MsgBox totalWords & " words found in the selected range."
  1. Тест программы.

Результат:

Count Words result