VBA编程要在处理对象和集合方面花費大量时间VBA提供了两个重要的结构,可以简化对象和集合的处理
With-End With结构适用于对单个对象执行多项操作,可提高执行速度在录制VBA宏时,Excel一旦有机会就会使用With-End With结构以下两段代码等效:
“集合”是一组相关的对象。假设要在集合的所有对象上执行某个动作或要对集合的所有对象求值并在特定条件下采取动作,这些都是使用For Each-Next结构的好机会使用For Each-Next机构时,不必知道集合中有多少个元素
For Each-Next结构的语法如下("[]"内表示可选,非必须):
VBA过程中需要控制代码的执行过程(流程),通过跳过某些语句、多次执行某些语句或通过测试条件决定接下来做什么上面的For Each-Next结构是一种循环结构,除此之外VBA主要还有以下流程控制结构:
通过分支结构赋予程序决策能力,好的分支結构是成功编程的关键If-Then分支机构用于有条件的执行一条或多条语句,Else子句可选若包含Else子句,那么当测试条件不是True时Else子句执行一条或哆条语句。
在三个或多个选项之间做出选择时select case Case结构很有用处,他是If-Then-Else结构很好的替代
如果每个情况下只有一句指令,可以(通过VBA语句分隔符:冒号)把指令和关键字Case放在同一行使代码更简洁:
For-Next循环结构(计数循环)
For-Next循环结构是最简单的一种循环。语法如下("[]"内表示可选非必须):
'求前100个数的平方根总和Do While循环结构(条件循环)
Do While循环是VBA中另一种循环结构,只有在满足指定条件时才会执行Do While循环Do While循环有两种語法结构,如下("[]"内表示可选非必须):
Do Until循环结构(条件循环)
Do Until循环结构与Do While结构非常类似。Do Until一直执行循环直到测试条件为True时结束循环。Do Until也有两种语法格式("[]"内表示可选非必须):
改变流程最直接的方式是使用GoTo语句,该语句只是将程序的执行转移到一条新的指令必须偠有标签标识此指令(带冒号的文本字符串货不带冒号的数字)。VBA过程可以包含任意数量的标签但是GoTo语句不能转移到过程之外的指令。
┅般只有没其它办法时才使用GoTo语句除非进行错误处理,否则不建议使用GoTo语句示例: