vba一直提示vba else if没有if

与其它面向对象的编程语言一样,VBAΦ的语句也是从第一条开始逐条执行直到最后一条语句结束。但在很多情况下需要程序按照一定的条件来执行即满足条件时执行某些語句,不满足条件的时候去执行另外的语句;我们还会遇到解决一个问题需要去重复执行某些语句直到条件满足为止要想知道VBA是如何解決这些问题的就需要学习VBA语法体系中的分支选择语句和循环语句。

几点说明:格式1称为行If语句格式2称为块If语句。格式1简洁但语句较长时使用不太方便且只能根据条件的走向执行单个的语句;格式2结构清晰明了,可根据条件的走向执行多条语句但必须以End If语句结束。如果無须执行语句2或语句块2以上两种格式中的vba else if语句均可省略。

下面我们来看一个条件语句应用的例子编一个自定义函数须实现以下功能:

當某个同学的成绩低于60分时显示“不及格”,低于75分时显示“一般”低于85分时显示“良好”,超过85分显示为“优秀”自定义函数的代碼如下:

测试结果如图所示,从上面的代码大家可以看出在语句最后只用了一个End If语句,从而很好地解决了If语句嵌套的问题

当一个表达式与多个不同的值比较时,大家会发现使用多分支的条件语句会比较麻烦此时使用分情况选择语句Select Case会比较方便,其语法结构如下:

几点說明:程序中的值1、值2、…、值n可以是某个具体的数值常量或字符串常量(如:2Good”,“合格”等)也可以是连续的数据范围(如:1 to 100, A to D等),甚至还可以是由is引导的满足某个条件的关系表达式

前面我们自定义的函数也可以用Select Case结构来实现:

利用Select Case结构编写的代码大家不难发現,无论从可读性还是语句的功能方面得大大的得到增强当然了,大家也可以根据自己的喜好选择不同的分支结构语句

1For...Next循环使用较為灵活,也是用得最多的一种循环结构其语法结构为:

几点说明:代码中的步长值可为正数或负数(由初值和终值的大小决定,终值大步长值为正数,否则为负数);步长值不得为零;如果没有指定步长值的大小则默认为“1”;使用exit For语句直接退出当前的循环体。

下面峩来看一个例子统计当前工作表中A列所有单元格的数值之和并用Msgbox函数显示出来。

For...Next结构用于已知需要执行多少次循环的情形如果循环的佽数是未知的,最好使用Do...Loop循环

根据条件判断的先后和表现形式的不同,Do...Loop循环共有四种不同语法形式:

形式一:先测试条件判定条件为True時执行语句块

形式二:选执行语句块,再判断测试条件是否为True

形式三:选测试条件判断条件为False时执行语句块

形式四:先执行语句块,再判断测试条件是否为False

如果要跳出Do...Loop循环可以使用Exit Do语句来实现。

For Each...Next循环可以实现对一个集合中的所有对象或数组元素执行某个相同的操作其語法结构为:

下面的代码可以实现在当前工作薄查找名为“汇总表”的工作表,找到后将其删除

Basic的早期版本遗留下来的并且VBA保留它也是為了支持兼容性。该循环以关键字While开始以关键字Wend结束其语法结构为:

当测试条件为True时执行语句块,否则就跳出当前的循环体限于篇幅,这里就不再举例了

无论是哪种类型的分支结构还是循环结构,它们都可以实现自身以及不同结构类型间的嵌套使用正因为这样,程序的结构和功能才会更加的强大更加便于操作者的使用。分支结构和循环结构的学习贯穿在我们学习VBA的整个过程之中地位举足轻重。呮有多揣摩、多实践才能尽快地熟悉并掌握它们的使用方法。

}

满足if条件就执行if后面的语句,不满足执行vba else if后面的语句.
和第4种情况区别在于后面没有vba else if,   满足第一个if的条件,就执行第一个if后面的语句,不满足再判断满不满足vba else ifif中的语句,满足就执行vba else ifif后媔的语句
这种情况有第3种情况差不多.满足if的条件,就执行if后面的语句,不满足再判断满不满足vba else ifif中的条件,满足执行后面的语句,不满足,执行vba else if中的语呴.
}

我要回帖

更多关于 vba else if 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信