学习VBA
之 其它常用语句
1、EXIT与END退出语句
Exit 退出语句
1.exit do
2.exit for
3.exit function
4.exit sub
第1个与第2个在之前讲过,这里不再陈述,第3个是退出自定义函数过程,在自定义函数时再细讲,这里讲下第4个。
Exit sub是在程序中间直接退出程序的命令。例:
Sub aa()
For a=1 to 10
If a>5 then exit sub
Next
Msgbox “循环了” & a-1 & “次”
End sub
通过运行这段程序后,我们可以发现,程序中的msgbox命令并没有执行,这就是因为在循环中我加了这个exit sub。这个exit sub命令意思等同于end sub。那为什么既然有了end sub,为什么还要有exit sub这个命令呢?这是因为在一段程序里,只能有一个end sub来做为程序的结束语。如果这里在if语句后加的是end sub,就会报错。
End 退出语句
1. end if
2. end select
3. end function
4. end sub
5. end
第1、2、4个我们讲过,第3个也会在自定义函数过程中讲,下面简单讲下end。
End 是强制退出所有的程序或过程,在程序运行中相当于exit sub,在过程中相当于exit function。在这里就不举例了。
2、GOTO LINE跳转语句
Goto line 语句是无条件跳转到指定的行。一般情况下,goto…出现在判断语句中,在符合某种条件下,无条件跳转到line:行,去执行line:行下面的语句,line:行必须是单独成行,前后不能有任何命令,line可以用不含所有excel保留单词的任意名,可以是英文,也可以是数字。Line后必须带”:”。Line:行,可以在goto…之前,也可以在它之后。这个语句很灵活,
主要表现在:
1. 当循环来使用
例:
Sub aa()
Sim a$
Line:
A=inputbox(“请录入密码”)
If a<>”admin” then goto line
End sub
2.有选择的退出多层循环。
例:一次退出三重循环
Sub aa()
Dim aa!,bb!,cc!
For a=1 to 10
Aa=aa+1
For b=1 to 10
Bb=bb+1
For c=1 to 10
Cc=cc+1
Goto aa
Next
Next
Next
Aa:
Msgbox “外循环” & aa & “遍,中循环” & bb & “遍,内循环” & cc & “遍。”
End sub
3. 有条件的避开部分语句的执行,例:
Sub aa()
For a=2 to 10
If a>=4 and a<=6 then goto aa
lls(a,5)=”良”
Aa:
Next
End sub
4. 按条件输入数据,例:
A | B | |
1 | 上班打卡时间 | 考勤 |
2 | 8:16 | |
3 | 7:10 | |
4 | 7:22 | |
5 | 8:05 | |
6 | 7:49 | |
Sub aa()
For i=2 to 6
lls(I,1) > 1/3 then goto aa
next
next
Exit sub
Aa:
lls(I,2) = “迟到”
Return
End sub
对于时间的逻辑表达式判断,在这里用了个1/3,由于一天是24小时,8:00就是一天的1/3,超过8:00的逻辑表达式我们可以用if后的逻辑表达式格式来表示。
Return是将运行指针跳转到刚才的goto后,接着运行,在这段程序里就跳到next处,接着进行循环的执行。
在goto后的执行行aa前一定要提前退出程序运行exit sub,不然循环后还会再执行一次aa:后面的代码。
GOTO…LINE小结:虽然它简单,但因为它灵活,就能完成很多用其它语句不容易办到的事情,它的功能不仅仅是以上三种,需要我们在以后的使用中不断揣摩才能熟悉。由于它太过于灵活,太多的GOTO语句反而会使程序不容易阅读,及调试,所以在一段代码中,应减少用它的次数。
3、ON ERROR……错误分支语句
1. on error resume next
当错误的时候继续执行下去,不报错。例:
A | B | C | D | |
1 | 姓名 | 语文 | 数学 | 总分 |
2 | 张三 | 57 | 77 | |
3 | 李四 | 未考 | 88 | |
4 | 王五 | 95 | 未考 | |
5 | 陈六 | 75 | 99 | |
6 | 田七 | 未考 | 97 | |
Sub aa()
Dim i!
On error resume next ‘当错误的时候继续执行下去
For i=2 to 6
Cells(I,4)=cells(I,3) + cells(I,2)
Next
End sub
由于字符型与数值型不能相加,如果不加on error resume next这句,当运行到第二遍时,就会报错,加上这句后,运行时就不理会这个错误,接着执行下一次循环。
2. on error goto….
当错误的时候去哪儿?例:同样是上面那个表
Sub aa()
On error goto aa
For i=2 to 6
Cells(I,4) = cells(I,3) + cells(I,2)
Next
Aa:
vba做excel窗体录入教程 Msgbox “对不起,错误发生在表格第” & I & “行!”
End sub
4、WITH….END WITH简化程序代码语句
当对某个对象重复录入时,可以省略对象的代码录入。例:
Sub aa()
A=cells(1,1).address ‘将第一行第一列单元格的地址同仁给变量a
A=cells(1,1).parent.name ‘将第一行,第一列单元格的上一级名字赋值给变量a
Cells(1,1)=”1234” ‘在第一行第一列单元格内输入“1234”
End sub
用with…end with语句来再写一遍
Sub aa()
With cells(1,1)
A=.address
A=.parent.name
.value=”1234”
End with
End sub
在这段代码的with与end with中间,应该录入cells(1,1)的地方,就可以省略不写。
With…end with的嵌套使用。例:
Sub aa()
With cells(1,1)
.value=”123” ‘将第一行第一列输入“123”
.parent.name=”表1” ‘将第一行第一列的上一级改名为“表1”
With .font
.size=20 ‘将它的字大小设置为20
.bold=true ‘将它的字体加粗
End with
End with
End sub
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论