VB 关键字
保留字、语句关键字、运算符与常量分类速查。
Key PointsVBScript 的关键字分四类:声明、流程、过程、错误处理,加上运算符和内置常量。
声明
| Keyword | Use |
|---|---|
Dim | Dim x, y |
ReDim | ReDim Preserve a(10) |
Const | Const PI = 3.14 |
Option Explicit | 文件第一行 |
Public / Private | 在类或模块里用 |
Class | Class Foo ... End Class |
流程
| Keyword | Use |
|---|---|
If ... Then ... ElseIf ... Else ... End If | 多分支判断 |
Select Case ... End Select | 按值分派 |
For ... Next | For i = 1 To 10 Step 2 |
For Each ... Next | For Each x In arr |
Do While ... Loop | 先判断 |
Do ... Loop Until | 先执行 |
While ... Wend | 不推荐 |
Exit For / Exit Do | 只跳一层 |
过程
| Keyword | Use |
|---|---|
Sub ... End Sub | 不返回值 |
Function ... End Function | 返回值 |
Call | Call F(a) |
ByVal | Sub F(ByVal x) |
ByRef | 默认行为 |
Optional | Function F(a, Optional b = 1) |
Exit Sub / Exit Function | 唯一的退出方式 |
错误处理
VBSCRIPT
On Error Resume Next ' 出错继续
' ... 可能出错的代码 ...
If Err.Number <> 0 Then
WScript.Echo Err.Number & ":" & Err.Description
Err.Clear ' 清空错误
End If
On Error GoTo 0 ' 恢复正常错误处理| Keyword | Use |
|---|---|
On Error Resume Next | 跳过错误语句继续 |
On Error GoTo 0 | 关闭忽略 |
Err | Number、Description、Source |
Err.Clear | 清空当前错误 |
运算符
| Category | Operators |
|---|---|
| Arithmetic | + - * / \(整除) Mod ^ |
| Comparison | = <> < > <= >= Is |
| Logic | And Or Not Xor Eqv Imp |
| Concat | & |
| Other | .(成员) ()(调用) |
VBSCRIPT
WScript.Echo 7 \ 2 ' 3(整除)
WScript.Echo 7 Mod 2 ' 1(余数)
WScript.Echo 2 ^ 10 ' 1024
WScript.Echo "a" & "b" ' ab
WScript.Echo Not True ' FalseOutput
3
1
1024
ab
False\ is integer division and / floating: 7 / 2 is 3.5, 7 \ 2 is 3. Programmers from C-family languages often expect / to truncate and get a decimal instead.
内置常量
| Group | Constants |
|---|---|
| MsgBox buttons | vbOKOnly(0) vbOKCancel(1) vbYesNo(4) vbYesNoCancel(3) |
| MsgBox return | vbOK(1) vbCancel(2) vbYes(6) vbNo(7) |
| MsgBox icon | vbCritical(16) vbQuestion(32) vbExclamation(48) vbInformation(64) |
| String | vbCr vbLf vbCrLf vbTab vbNullChar |
| Compare | vbBinaryCompare(0) vbTextCompare(1) |
| Date | vbSunday(1) vbMonday(2) ... vbUseSystemDayOfWeek(0) |
| Color | vbRed vbGreen vbBlue vbBlack vbWhite |
保留字不能当变量名
VBSCRIPT
' 错误:这些是保留字
' Dim date ' Date 是函数名,虽然能过编译但会遮蔽函数
' Dim len ' 同上
' Dim if ' 语法错误
' 安全做法:加前缀或改词
Dim dToday
Dim nLength
Dim sNameNames like
Date, Len, Time and Name are usable as variables but shadow the function of the same name, so Date() later returns your variable. Such bugs are painful; a type prefix (d, n, s) avoids them entirely.语句分隔
VBSCRIPT
Dim a, b
a = 1 : b = 2 : WScript.Echo a + b
If a > 0 Then WScript.Echo "正" : WScript.Echo "数"
' 上面这行:单行 If 只作用于第一条语句,第二条总会执行Output
3
正
数Colons separate statements on one line, but with a single-line If only the first is conditional — the rest always run. Very easy to misread; avoid colons in real code.
声明
| 关键字 | 用途 |
|---|---|
| 声明变量 | Dim x, y |
| 重设数组 | ReDim Preserve a(10) |
| 声明常量 | Const PI = 3.14 |
| 强制声明 | 文件第一行 |
| 作用域 | 在类或模块里用 |
| 类 | Class Foo ... End Class |
流程
| 关键字 | 用途 |
|---|---|
| 条件 | 多分支判断 |
| 多分支 | 按值分派 |
| 计数循环 | For i = 1 To 10 Step 2 |
| 遍历 | For Each x In arr |
| 条件循环 | 先判断 |
| 条件循环 | 先执行 |
| 老式循环 | 不推荐 |
| 跳出 | 只跳一层 |
过程
| 关键字 | 用途 |
|---|---|
| 过程 | 不返回值 |
| 函数 | 返回值 |
| 调用 | Call F(a) |
| 传值 | Sub F(ByVal x) |
| 传引用 | 默认行为 |
| 可选参数 | Function F(a, Optional b = 1) |
| 提前返回 | 唯一的退出方式 |
错误处理
VBSCRIPT
On Error Resume Next ' 出错继续
' ... 可能出错的代码 ...
If Err.Number <> 0 Then
WScript.Echo Err.Number & ":" & Err.Description
Err.Clear ' 清空错误
End If
On Error GoTo 0 ' 恢复正常错误处理| 关键字 | 用途 |
|---|---|
| 继续执行 | 跳过错误语句继续 |
| 恢复 | 关闭忽略 |
| 错误对象 | Number、Description、Source |
| 清空 | 清空当前错误 |
运算符
| 类别 | 运算符 |
|---|---|
| 算术 | + - * / \(整除) Mod ^ |
| 比较 | = <> < > <= >= Is |
| 逻辑 | And Or Not Xor Eqv Imp |
| 拼接 | & |
| 其它 | .(成员) ()(调用) |
VBSCRIPT
WScript.Echo 7 \ 2 ' 3(整除)
WScript.Echo 7 Mod 2 ' 1(余数)
WScript.Echo 2 ^ 10 ' 1024
WScript.Echo "a" & "b" ' ab
WScript.Echo Not True ' FalseOutput
3
1
1024
ab
False\ 是整除(去掉小数),/ 是浮点除。7 / 2 得 3.5,7 \ 2 得 3。从 C 系语言转来的人常把 / 当整除,结果得到小数。
内置常量
| 分组 | 常量 |
|---|---|
| 消息框按钮 | vbOKOnly(0) vbOKCancel(1) vbYesNo(4) vbYesNoCancel(3) |
| 消息框返回 | vbOK(1) vbCancel(2) vbYes(6) vbNo(7) |
| 消息框图标 | vbCritical(16) vbQuestion(32) vbExclamation(48) vbInformation(64) |
| 字符串 | vbCr vbLf vbCrLf vbTab vbNullChar |
| 比较 | vbBinaryCompare(0) vbTextCompare(1) |
| 日期 | vbSunday(1) vbMonday(2) ... vbUseSystemDayOfWeek(0) |
| 颜色 | vbRed vbGreen vbBlue vbBlack vbWhite |
保留字不能当变量名
VBSCRIPT
' 错误:这些是保留字
' Dim date ' Date 是函数名,虽然能过编译但会遮蔽函数
' Dim len ' 同上
' Dim if ' 语法错误
' 安全做法:加前缀或改词
Dim dToday
Dim nLength
Dim sNameDate、Len、Time、Name 这些函数名在 VBScript 里可以当变量名,但会遮蔽同名函数,之后调 Date() 就拿到你的变量。这类 bug 极难查,命名时统一加类型前缀(d、n、s)能彻底避免。语句分隔
VBSCRIPT
Dim a, b
a = 1 : b = 2 : WScript.Echo a + b
If a > 0 Then WScript.Echo "正" : WScript.Echo "数"
' 上面这行:单行 If 只作用于第一条语句,第二条总会执行Output
3
正
数冒号能把多条语句放一行,但和单行 If 混用时,If 只管第一条——第二条语句无条件执行。这是极易看错的写法,正式代码里应避免用冒号。