计算字数在Excel VBA
下面我们就来看看在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.测试程序。
结果: