下面我们将看一下Excel VBA中的一个程序,该程序对选定范围内的单词数进行计数。假定一个或多个空格分隔单词。
情况:
1.首先,我们声明两个Range对象和三个变量。我们将Range对象称为rng和cell。我们将一个Integer变量称为cellWords,将一个Integer变量称为totalWords,将一个String变量称为content。
Dim cellWords,totalWords 作为 整数,内容作为 String
2.我们使用所选范围和两个Integer类型的变量(值均为0)初始化Range对象rng。
cellWords = 0
totalWords = 0
3.我们要检查随机选择范围内的每个像元(该范围可以是任何大小)。在Excel VBA中,可以为此使用“每个下一个”循环。添加以下代码行:
接着细胞
注意:这里随机选择rng和cell,您可以使用任何名称。请记住在其余代码中引用这些名称。
4.接下来,我们确定该范围内的每个单元格包含多少个单词。要忽略包含公式的单元格,请在For Each和Next之间添加以下代码行(仅当cell.HasFormula为false时,我们才继续)。
结束 。如果
5.首先,我们将单元格的内容写入变量内容。接下来,我们删除开头和结尾的空格(如果有的话)。在Excel VBA中,可以为此使用Trim函数。例如,“ excel vba”将转换为“ excel vba”。在If语句中添加以下代码行。
内容=修剪(内容)
注意:Excel VBA中的修剪功能不会删除单词之间的多余空格,但是在此示例中可以。
6.此时,一个单元格仍可以为空。如果单元格为空,则将值0分配给变量cellWords。如果不是,它至少包含一个单词,我们将值1分配给变量cellWords。在If语句中添加以下代码行。
cellWords = 0
否则
cellWords = 1
结束 如果
一个单元格当然可以包含多个单词。这正是我们现在想要找出的。我们以一个示例为例:“ excel vba”。如果一个单元格在此阶段至少包含一个空格,则它至少还包含一个单词。您可以在Excel VBA中使用Instr函数来查找空间。Instr(content,“”)查找内容中第一个空格的位置。
7.我们将利用 Do While循环结构。只要Do While之后的部分为真,将重复放置在这些单词之间的代码(在步骤8、9和10)。只要Instr(content,“”)> 0为true(只要content包含空格并因此包含更多单词),我们就想重复这些步骤。在If语句中添加Do While循环。
环
8.接下来,我们从第一个空格的位置开始处理部分内容。为此,我们使用Mid函数。
例如:Mid(“ excel vba”,InStr(“ excel vba”,“”))将给出“ vba”。
9.我们再次修剪字符串。
结果:“ vba”
10.我们将cellWords增加1。
只要内容包含空格并包含更多单词,就会重复执行“ Do While循环”。在我们的示例中,由于“ vba”不再包含空格,因此退出Do While循环!结果:此单元格包含2个字。
11.检查完一个单元格后,将cellWords添加到变量totalWords中。该代码行应放在Do While循环之外,但应放在If语句中。
对于下一个单元格,整个过程将再次开始,直到检查完所有单元格为止。
12.最后,我们使用msgbox显示totalWords的值。该代码行应放置在For Each Next循环之外。
13.测试程序。
结果: