二、VBS基础知识<上篇>


该章我们将了解vbs的基础知识,比如变量的申明,数组,控制结构等,详细内容如下:

一、变量

1
2
3
4
5
6
7
Option Explicit
Dim num_a
num_a = "Hello " & vbNewLine & "world!"

MsgBox "Hello World!", 65, "MsgBox Example"
MsgBox num_a & vbCr & "num_a's type is: " & TypeName(num_a) & vbLf &_
"the number of num_a is: " & VarType(num_a)

备注:
1、Option Explicit :表示之后的变量必须显示声明,否则程序将报错
2、变量的定义与声明必须分开说明
3、vbcr:回车符; vblf:换行符 ; vbcrlf:回车与换行符 ; vbNewLine:新行字符
4、_:表示分行的数据为同一行数据 <单行拆分>
5、:表示通过“:”可将多行的数据写在一行上<多行合并>

二、常数

1
2
Const Con_NUM_1="China"
MsgBox "Const is: " & Con_NUM_1

备注:
1、常数在声明和赋值必须一步完成
2、常数在程序运行期间,不能被重新赋值,否则,报错

三、数组

1、固定长度数组

1
2
3
4
5
6
7
8
9
10
Dim arr_a(2)
Dim i
arr_a(0)=0
arr_a(1)="a"
arr_a(2)="2"
MsgBox "the maximum index of the array is: " & UBound(arr_a)
MsgBox "the elements of the array is: "
For i=0 To UBound(arr_a)
    MsgBox "the" & i & "element is: " & arr_a(i)
Next

2、动态数组

1
2
3
4
5
6
7
8
9
Dim arr_b()
Dim j
ReDim arr_b(0)
arr_b(0)=0
ReDim Preserve arr_b(1)
arr_b(1)=1
For j=0 To UBound(arr_b)
    MsgBox "the" & j & "element is: " & arr_b(j)
Next

备注:
1、要定义动态数组,首次定义时,数组长度不指定
2、Preserve:表示重新调整数组长度时,保留数组之前的内容,同时数组长度的调整次数无限制

四、运算符

1
2
3
4
5
6
7
8
9
10
11
MsgBox "幂 2^4=" & 2^4
MsgBox "除 5.1/4=" & 5.1/4
MsgBox "整除 2\4=" & 2\4
MsgBox "求余 (5)mod(3)=" & (5)mod(3)
MsgBox "不等于 3<>2 " & (3<>2)
MsgBox "逻辑与 0 and 2: " & (0 and 2)
MsgBox "逻辑或 0 or 2: " & (0 or 2)
MsgBox "逻辑非 not 2: " & (Not 2)
MsgBox "逻辑异或 1 xor 1: " & (1 Xor 1)
MsgBox "逻辑等价 1 eqv 2: " & (1 eqv 2)
MsgBox "逻辑隐含 1 imp 2: " & (1 imp 2)

五、控制结构

1、 if..then..else

1
2
3
4
5
6
7
8
Dim num_c,num_d,MyVar
num_c = 3
num_d = 2
If num_c < num_d Then
    yVar = MsgBox("pass",65,"result")
Else
    MyVar = MsgBox("fail",65,"result")
End If

2、 select..case

1
2
3
4
5
6
7
8
9
10
11
im num_e
num_e = 7

Select Case num_e
Case 1
    MsgBox "1"
Case 3
    MsgBox "3"
Case Else
    MsgBox "default"
End Select

3、 do..loop

1
2
3
4
5
6
7
8
9
10
11
Dim num_f
num_f = 10
Do While num_f > 8
    num_f = num_f -1
    MsgBox num_f
Loop

Do
num_f = num_f -1
    MsgBox num_f
Loop While num_f >3

4、 while..wend

1
2
3
4
5
6
Dim num_g
num_g = 4
While num_g > 1
    MsgBox num_g
    num_g = num_g – 1
Wend

5、 for..next

1
2
3
4
5
6
Dim num_g
num_g = 4
While num_g > 1
    MsgBox num_g
    num_g = num_g – 1
Wend

6、 退出循环或过程的方法

1
2
3
4
5
Exit Do
Exit For
Exit Function
Exit Property
Exit Sub

六、过程和函数

1、函数

1
2
3
4
Function fun(a,b)
    fun = a+b
End Function
MsgBox fun(1,3)

2、过程

1
2
3
4
Sub su(a,b)
    MsgBox a+b
End Sub
su 1,2

3、备注

function,sub均可带参数,同时function可有返回值,sub不能带返回值

七、常用函数

1、转换函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
'asc:返回与字符串的第一个字母对应的 ANSI 字符代码
MsgBox Asc("ABC") '65

'chr:返回与指定的 ANSI 字符代码相对应的字符
MsgBox Chr(65) 'A

'strComp:返回字符串比较的结果,-1:小于 0:等于 1:大于
MsgBox StrComp("a","b")

'StrReverse:返回字符串,此字符串与指定字符串顺序相反
MsgBox StrReverse("ABCDE")

'cstr:将指定表达式转换为字符串
MsgBox TypeName(CStr(111))

'cint:将指定的表达式转换为数字
MsgBox TypeName(CInt("123"))

2、判断函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
'isarray:返回指定变量是否为数组
Dim arr_1(3)
MsgBox IsArray(arr_1)

'isdate:返回指定变量是否为日期内容
MsgBox IsDate("2011-7-7")

'isempty:返回 Boolean 值,指明变量是否已初始化,未初始化返回True,初始化返回False
Dim bool
MsgBox IsEmpty(bool) 'True 未初始化
bool=1
MsgBox IsEmpty(bool) 'false 已初始化
bool=Null
MsgBox IsEmpty(bool) 'false 已初始化
bool=Empty
MsgBox IsEmpty(bool) 'true 未初始化

'IsNumeric:返回boolean值,指明变量是否为数字
MsgBox IsNumeric(3)

'isnull:指明表达式是否不包含任何有效数据,含有返回True,未含有返回False
Dim isn
MsgBox IsNull(isn)

'isobject:返回指定变量是否是对象,是对象返回True,不是对象返回False
Dim obj
Set obj = CreateObject("Wscript.shell")
MsgBox IsObject(obj)

3、时间函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
'根据计算机系统设定的日期和时间返回当前的日期和时间值
MsgBox Now()

'返回当前年月日,还有year(),month(),day()
MsgBox Date()

'返回当前时分秒,还有hour(),minute(),second()
MsgBox Time()

'返回星期数,日-六 分别为1-7
Dim mydate
mydate = #2011-7-7#
MsgBox Weekday(mydate) '返回5,代表星期四

'返回系统日期与指定日期相减后的日期
MsgBox DateAdd("yyyy",1,Date()) '返回系统日期一年后的日期

'备注:
'yyyy--代表年 q--代表季度 m d--代表月 日
'y--代表一年的日数 w--代表一周的日数 h n s --代表时分秒
'返回两个日期的间隔日期
MsgBox DateDiff("m","2011-7-1","2012-9-3") '返回14,代表相差14个月

4、其他函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
'将指定字符串转换为大小写
MsgBox UCase("AaA")
MsgBox LCase("AaA")

'返回字符串的长度
MsgBox "china长度为:" & Len("china")

'截取字符串
MsgBox "china 前3个字符为:" & Left("china",3)
MsgBox "china 后3个字符为:" & Right("china",3)
MsgBox "china 从第2个字符开始,后3个字符为:" & mid("china",2,3)

'返回某字符串在另一字符串中第一次出现的位置
MsgBox "n在china的第" & InStr(2,"china","n",1) & "个位置"

'备注: 2--表示从第2个字符开始搜索,1--表示文本比较
LEAVE A REPLY

loading