下面我们就来看看在Excel VBA程序计数在选定范围的单词数。一个或多个空格被假定为单独的单词。

现状:

Count Words in Excel VBA

1.首先,我们声明两个范围的对象和三个变量。我们呼吁Range对象RNG以及细胞。一个整型变量我们称之为cellWords,一个整型变量我们称之为totalWords,和我们所说的内容一个字符串变量。

Dim rng As Range, cell As Range

Dim cellWords, totalWords As Integer, content As String

2.我们初始化与所选择的范围中的范围对象RNG和整数类型与值0的两个变量

Set rng = Selection

cellWords = 0

totalWords = 0

3.我们想要查询在一个随机选择的范围内的每个小区(该范围可以是任何大小的)。在Excel VBA中,你可以使用对于每个Next循环这一点。添加以下代码行:

For Each cell In rng

Next cell

注:RNG以及细胞随机选择了这里,你可以使用任何名字。

请记住,是指这些名字在你的代码的其余部分。

4.接下来,我们决定在这个范围内有多少字包含的每个细胞。忽略包含公式的单元格中,添加间对于每个和Next(仅当cell.HasFormula是假,我们继续)下面的代码行。

If Not cell.HasFormula Then

End If

首先,我们写的细胞对可变内容的内容。

接下来,我们在开头和结尾中的空格(如果有的话)。在Excel VBA,您可以使用此修剪功能。例如,“Excel VBA中”将被转换为“Excel VBA中”。添加以下代码行中的if语句。

content = cell.Value

content = Trim(content)

注:在Excel VBA修正功能不会删除单词之间多余的空格,但没关系在这个例子。

6.此时,细胞仍然是空的。如果单元格是空的,我们分配值0给变量cellWords。如果不是,它至少包含一个词,我们分配值1变量cellWords。添加以下代码行中的if语句。

If content = "" Then

cellWords = 0

Else

cellWords = 1

End If

一个单元格可以包含当然不止一个字。这正是我们现在要了解一下。作为一个例子,我们采取“Excel VBA中”。如果一个单元格包含在这个阶段至少有一个空格,它至少包含一个更字。您可以使用InStr函数在Excel VBA中寻找空间。

INSTR(内容“,“)发现在内容的第一空间中的位置。

7.我们将利用do while循环结构。代码放置在这些字之间(在步骤8,9和10)虽然是真实只要将重复后做的部分。我们要重复这些步骤只要INSTR(内容,““)> 0是真实的(只要内容中包含的空间,从而更多的话)。添加do while循环在你的if语句。

Do While InStr(content, " ") > 0

Loop

8.接下来,我们取内容的起始部分在所述第一空间中的位置。我们使用Mid函数这一点。

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

例如:MID( “创先争优VBA”,InStr函数( “创先争优VBA”, “ ”))将给予“ VBA”。

9.我们再次修剪的字符串。

content = Trim(content)

结果是: “VBA”

10.我们增量cellWords由1

cellWords = cellWords + 1

这do while循环将只要内容中包含的空间,从而更多的单词重复。在我们的例子中,我们退出do while循环,因为“VBA”不包含空间了!结果:该单元格中包含2个字。

11.在检查一个细胞后,我们添加cellWords到变量totalWords。这行代码应放在do while循环之外,但在If语句。

totalWords = totalWords + cellWords

直到所有的细胞都被检查的整个过程进行下一次小区重新开始。

12.最后,我们显示使用一个MsgBox totalWords的值。此代码行应放在外部的对于每个下一循环。

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

13.测试程序。

结果:

Count Words result