VBA基本语言结构
几个语句
If…then语句
If A then B:如果A判断条件成立,则执行B语句;
Eg:if time >0.5 then msgbox”下午好”
“time>0.5”:time函数返回当前时间,大于0.5指现在是12点后,即显示下午好。
也有if A then B else C:如果判断条件A成立,则执行B语句,如果A不成立,则执行C语句。(个人注意,不能像C语言那样回车跳行,整句语句需在同一行,如果需要跳行,则需要在最后加上endif )
Eg:
If time >0.5then
Msgbox”下午好”
Else
Msgbox”早上好”
End if
同时,此语句也有elseif的情况。就是多重条件。
Eg:
If time<0.5 then
Msgbox”早上好”
Elseif time <0.75
Msgbox”下午好”
Else
Msgbox”晚上好”
Endif
Select…case语句
在判断或者选择条件较多时,使用if…then语句就比较麻烦,这是可以使用select…case语句。和C语言中的相近。
Eg:
Select case time ‘select case 后面跟判断表达式,可数值表达式,字符串表达式
Case is<0.5 ‘case后跟表达式列表,用来判断的值,可以使to或者is,如case 1 to 5,表示case 1,2,3,4,5.
Msgbox”早上好”
Case 0.5 to 0.75
Msgbox”下午好”
case else
msgbox”晚上好”
end select
实例,利用select case语句写一个分数判断程序,判断所给分数是否及格或者优良。
如上。
For … next 语句
此语句用于循环。比如在需处理的数据有很多行时,我们不能为每一行都写一句代码。多用在不同对象的选择引用上。
格式:
For <</span>循环变量>=<</span>初值> to <</span>终值> [step步长,默认为1]
<</span>循环体>
[exit for] ‘跳出循环触发语句,执行next后的语句
[循环体]
Next [循环变量,变量名可省略]
Eg:将1到100中的奇数按顺序放入表单中的A列。
首先分析需要怎么把奇数调出来:1开始,按顺序加上2就行。一个循环。
然后是放入单元格,需要按顺序,所以要单独对单元格引用定义。1开始,每次循环加上1.
结果:
我另外试了下,cells函数选择单元格也可以横向,将其中的列参数换为变量即可:
注意数值变量就不用打引号了。
Do while 语句
条件语句,格式:
Do [while 逻辑表达式]
<</span>循环体>
[exit do] ‘跳出循环,执行loop后的语句
[循环体]
[循环体]
Loop ‘do while语句结束标志,返回do语句处,再次判断循环条件
也可以在结尾判断,即:
Do
<</span>循环体>
[exit do]
Loop [while 逻辑表达式]
一个是先判断后执行,一个是先执行,后判断。注意,这两个不同,在如判断条件为数值时,注意取值大小。
Dountil语句
和do while语句相似,格式:
Do [until 逻辑表达式] ‘当条件满足时,退出,直到型
<</span>循环体>
[exit do]
Loop
另一种结尾判断式:
Do
<</span>循环体>
[exit do]
Loop [until 逻辑表达式] ‘当条件满足时,退出
似乎和C语言有些不一样,不过分开记就行。
Eg:
其他几个函数相近,自行练习。或者这样:Loop Until Cells(i, "A") = ""
For each…next语句
一个循环语句,用于在某一集合内部选择对象的语句,
格式:
For each 元素变量 in 集合名称或数组名称
<</span>语句块>
[exit for]
Next [元素变量]
这里需要注意,我们是将集合或数组中的元素变量进行选择,因此在提前定义元素变量时,需要定义类型和集合或数组一致。
Eg:下面的代码会在数组的每个元素中循环,并且将每个值设置成它的索引变量 I的值。(来自百度)
DimTestArray(10) As Integer, I As Variant
For Each I InTestArray
TestArray(I) = I
Next I
Goto语句
用于直接跳转指定位置的语句,和C语言的相近。在VBA中,指定位置可以在目标代码所在行前加上一个带冒号的字符串或不带冒号的数字作为标签,然后在goto的后面写上标签。
Eg:
Dim sum as long,Ias integer
i=1
x:sum=sum+i
i=i+1
if i<=100then goto x
msgbox”1到100的和为:”&sum
利用goto语句达到循环,其中“x:”即为跳转位置标识。不过一样,为了日后维护方便,不建议多用。
With语句
With语句的作用是,在处理同一对象的不同属性时,可以简化代码。
Eg:对某一单元格进行格式设置:
With worksheets(“sheet1”).range(“A1”).font
.name=”仿宋” ‘前面的小点不要忘了
.size=12
.bold=true
.colorindex=3
End with
此过程用来设置sheet1表单中A1单元格的格式,字体为仿宋,大小为12,加粗选择true,颜色代码为3.注意每个设置选项前有小点。