尽管是事件驱动,但仍要控制流程。主要三种:
顺序结构
选择结构
循环结构
重点是循环结构。
dim a as integer
a=val(text1.text) ' val(string) 将数据字串(可以是八进制或十六进制数)转为数据型
dim b as string
b=inputBox("请输入“) ’ 返回值是string型,若取消则返回为”“即空串。
输出:
msgBox("信息”) 返回值为integer,代表是按的某键返回
print 在所有者上显示(打印),省略时指的是窗体,debug指的是即时窗体
print "窗体上显示 "
printer.print "在打印机上打印“
两个特殊:tab(N)注意这不是tab(4个空格),而是打印起始点。表示打印的起始点。外观看起来相当于一个空格(字符)位置。
当在第一个表达式中出现,则按tab进行控制,当N大于行显时,按对行字符取模显示
当在后面表达式中时,无论是,还是;都会直接换行,按N点控制进行显示。大于行显时,按第一处理。
space(N)表示几个空格。
print 33;tab(3);77 ’第一行显示33,然后换行,在第3个字符处显示77
可用,和;对多个表达式进行显示, ","表示下一个表达式间隔14个字符,";"表示下一个表达式间隔2个字符。
Print 1; Space(2); 3 ‘ 间隔4个空格,因;占两上,space占2个,共4个
无表达式时,直接打印一空行,为boolean时打印True或False,空值时打印NULL(与空串不同)
if ... then ....
if .... then
....
end if
判断类型: Typeof 对象 Is 对象类型 返回逻辑值(真或假)
Dim a As Control For Each a In Form1.Controls If TypeOf a Is TextBox Then a.ForeColor = vbRed End If Next
判断是否为数值: IsNumeric(Variant)
表达式为不定型(变体型),若为数值则为真,否则假。特殊:日期型时返回为假。
Const a As Date = #2/22/2003#
MsgBox (IsNumeric(a)) '信息为False
基础类型怎么判断类型呢?
VarType(VarName) 返回值是Integer,代表各基础类型。其中数组是数组返回值+基础类型值
end 终极强制停止程序停止(退出)
exit sub/do/for/function 退出当前的子程序/循环/函数
unload object 卸载对象,以便回收内存。
当为卸载窗体时,会先Query_Form,然后Form_Unload,这样主要是要保护窗体中的数据,免得生硬的卸载了窗体。
当是MDIForm时,会先所有子窗体请求卸载后,再是主窗体。
注意:unload只是显示的部分被卸载,但相关的代码仍在内存中。(在form2中设置一个Public变量,当form2卸载后,仍可在form1中显示form2中的公用变量)
另外对于控件,只有运行时添加的控件才可以unload,否则出错。
IIF函数: IIF(逻辑表达式,真时返回结果,假时返回结果)
print IIF(88>66,777,222) '为真,用777,故窗体上显示777
分支选择结构
select case 表达式
case 值
。。。。
case else
..........
end select
值 可以是一个表达式,亦可多个表达式,之间用,进行间隔,表示条件or,注意不是and
case Is >0,Is <22 大于0或者小于22
注意:表达式中可以用单个值,也可以是连续值,还可是逻辑表达式, 主要是Is和To
Is用于逻辑表达,如>=,<>等,但只能一个单一的逻辑表达式,不能是复杂的,如 Is >0 and Is<22这种是错误的
To表示连接的之间的值,如 case 2 To 6,9,注意用To只能是小值在前,大值在后。
当条件值中是字串时,case中实际值还应用字串(引号)
for start to end step N
....
exit for
end counter
注意:步长默认为1,step可正可负,可小数,此时应匹配计数器为相应类型。如果计数器为整形,步长为小数,就可能出现死循环。
因为VB会自动隐形转为整形时,可能保持计数器不变,就死循环了。
while 条件 ‘ 条件为真时执行内部语句,为假时跳出语句
。。。。
wend ' while end之意
for each element in group ' group可能是数组或集合,element在数组时,只能是Variant变量,因此元素不能用于自定义类型(type)
.......
exit for
next element
例:
Dim a As Variant '若声明为与数组匹配的Integer将出错,必须声明为Variant
Dim b(10) As Integer
For Each a In b()
Print a
Next a
先判断后执行
do(while/untill) 条件 ‘ while当循环,为真执行下面;untill直循环,为假执行,为真跳出。
。。。。
exit do
loop
先执行后判断
do 条件
。。。。
exit do
loop(while/untill) 条件
with 省略写法
with object
属性或成员值
。。。
end with
注意:一次只能省略一个对象前缀,多个时,须嵌套使用
with form1
.forecolor=vbred
with text1
.text="asd"
end with
end with