VBScript 語法彙總
H.1 VBScript
VBScript 是微軟公司程式語言 Visual Basic (VB) 家族的一個新的成員,對
於 active scripting 提供多樣的環境,包括客戶端的 IE 瀏覽器以及伺服器
端的 PWS、IIS 伺服器。
有關 VBScript 在 HTML 裡的使用方法,您可選按瀏覽器的的功能
檔案 (F) | 開啟舊檔 (O)...
選 vbstutor.htm 網頁,該網頁提供簡要的說明。
C:\Program Files\WEBSVR\DOCS\ASPDocs\ref\vbs\vbscript\vbstutor.htm
有關 VBScript 的語法 (Language Reference),可參考 vbstoc.htm 網頁。
C:\Program Files\WEBSVR\DOCS\ASPDocs\ref\vbs\vbscript\vbstoc.htm
本小節對 VBScript 只提供彙總性之說明。
在說明 VBScript 語法之前先對於撰寫 VBScript 程式的一些習慣稍作說明。
● 常數命名習慣
以大寫字母命名,字組間以底線隔開。例如:
LINE_COUNT、MAX_NUMBER 等。
● 變數命名習慣
變數名稱前加上表示資料型態的字頭,例如:
intQuantity 表示整數數量。
lngDistance 表示長整數距離。
strMyName 表示我的名子識字串。
● 文件說明
函數或程序之前應該有簡短的說明。
H.2 資料型態
VBScript 只有一種 Variant 資料型態。依使用的情形,可包含各種資料,稱
為 Variant 型態的次型態 (subtype)。函數所傳回來的也是 Variant 型態。
VBScript 型態 Variant 的次型態如表 H.1 所示。您可使用 VarType() 函
數傳回指定變數的次型態。
表 H.1 型態 Variant 的次型態
次型態 說明
-------- ----------------------------------------------------
Empty 沒設定初值。數值變數值為 0,字串變數值為空字串。
Null 不含正確資料。
Boolean 包含 True 或 False。
Byte 包含整數 0 至 255。
Integer 包含整數 -32768 至 32767。
Currency 包含整數 -922,337,203,685,477.5808
至 922,337,203,685,477.5807。
Long 包含整數 -2,147,483,648 至 2,147,483,647。
Single 包含單精度值。
負值 -3.402823E38 至 -1.402823E-45。
正值 1.401298E-45 至 3.402823E38。
Double 包含雙精度值。負值
-1.79769313486232E308 至 -4.94065645841247E-324。
正值 4.94065645841247E-324 至 1.79769313486232E308。
Date January 1, 100 至 December 31, 9999。
Time January 1, 100 至 December 31, 9999。
String 包含變長字串,最長可達 2 百萬字元。
Object 包含物件。
Error 包含錯誤編號。
H.3 變數
變數可存放數值,該數值可隨您的意思改變,故稱為變數。您可使用 Dim 敘
述明確宣告,變數名稱之間以逗號隔開。例如:
Dim A, B, C, D
宣告 A、B、C、D 為變數。變數名稱必須以 alphabetic character 英文字母
起頭,不能包含句點 (period),不能超過 255 個字元。變數值可用指定敘述
指定,例如:
A=2
B=5
陣列變數也使用 Dim 宣告,但在變數名稱之後加上一組小括號,以說明元素
個數,例如:
Dim K(3)
宣告 K 是一個陣列變數,包含 K(0)、K(1)、K(2)、K(3) 共四個元素。K 稱
為一維陣列,因為它只有一個索引值,0 至 3。陣列若有兩個索引值稱為二維
陣列,例如:
Dim M(2,2)
宣告 M 是一個二維陣列變數,包含 M(0,0)、M(0,1)、M(0,2)、M(1,0)、
M(1,1)、M(1,2)、M(2,0)、M(2,1)、M(2,2) 共九個元素。陣列變數元素值也
是用指定的,例如:
K(0)=10
M(1,2)=12
H.4 常數
您可使用 Const 敘述宣告常數,例如:
Const MYSTRING, vbMyAge, CUTOFFDATE
MYSTRING="這是我指定的字串"
vbMyAge=33
CUTOFFDATE=#12-31-99#
常數的名稱最好都使用大寫英文字母表示,或使用 vb 起頭的名稱,以便和變
數區隔開來,不過 VBScript 許多已經定義好的常數都以 vb 起頭,因此您自
己所定義的常數最好選用大寫英文字母表示。
以下說明 VBScript 已經定義好的常數。
● 色碼常數
常數名稱 常數值 說明
-------- ------------ --------
vbBlack &h00 黑色
vbRed &hFF 紅色
vbGreen &hFF00 綠色
vbYellow &hFFFF 黃色
vbBlue &hFF0000 藍色
vbMagenta &hFF00FF 紫紅色
vbCyan &hFFFF00 紅色
vbWhite &hFFFFFF 白色
● 比較常數
常數名稱 常數值 說明
----------------- ------ --------------------
vbBinaryCompare 0 執行二進位比較
vbTextCompare 1 執行文字比較
vbDatabaseCompare 2 執行資料庫中資料比較
● 日期與時間常數
常數名稱 常數值 說明
-------- ------ ----------------------------
vbSunday 1 星期日
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六
vbFirstJan1 1 使用包含元月一日的星期
vbFirstFourDays 2 使用本年第一個最少四天的星期
vbFirstFullWeek 3 使用本年第一個完整的星期
vbUseSystem 0 使用系統的日期與時間
vbUseSystemDayOfWeek 0 使用系統的星期日期
● 日期格式常數
常數名稱 常數值 說明
-------------- ------ --------------------------------
vbGeneralDate 0 顯示日期與時間,格式依系統設定。
vbLongDate 1 以長格式顯示日期。
vbShortDate 2 以短格式顯示日期。
vbLongTime 3 以長格式顯示時間。
vbShortTime 4 以短格式顯示時間。
● 檔案輸入輸出常數
常數名稱 常數值 說明
-------------- ------ ------------------
ForReading 1 開啟一個唯讀的檔案
ForWriting 2 開啟一個寫入的檔案
ForAppending 8 開啟一個附加的檔案
● 其他常數
常數名稱 常數值 說明
-------------- ---------- ------------
vbObjectError &h80040000 物件錯誤編號
● MsgBox 常數
常數名稱 常數值 說明
-------------- ------ -----------------------------
vbOKOnly 0 只顯示 OK 鈕
vbOKCancel 1 顯示 OK 及 Cancel 鈕
vbAbortRetryIgnore 2 顯示 Abort、Retry、Ignore 鈕
vbYesNoCancel 3 顯示 Yes、No、Cancel 鈕
vbYesNo 4 顯示 Yes、No 鈕
vbRetryCancel 5 顯示 Retry、Cancel 鈕
vbCritical 16 顯示 Critical Message 圖示
vbQuestion 32 顯示 Warning Query 圖示
vbExclamation 48 顯示 Warning Message 圖示
vbInformation 64 顯示 Information Message 圖示
vbDefaultButton1 0 預設第一個按鈕
vbDefaultButton2 256 預設第二個按鈕
vbDefaultButton3 512 預設第三個按鈕
vbDefaultButton4 768 預設第四個按鈕
vbApplicationModal 0 應用程式模式
vbSystemModal 4096 系統模式
下面常數用於 MsgBox() 函數用於識別使用者選用那一個按鈕。
常數名稱 常數值 說明
------------ ------ -----------------
vbOK 1 OK 按鈕被按下
vbCancel 2 Cancel 按鈕被按下
vbAbort 3 Abort 按鈕被按下
vbRetry 4 Retry 按鈕被按下
vbIgnore 5 Ignore 按鈕被按下
vbYes 6 Yes 按鈕被按下
vbNo 7 No 按鈕被按下
● 字串常數
常數名稱 常數值 說明
------------ ------ ----------------------------------
vbCr Chr(13) Carriage Return 即 Enter 鍵
vbCrLf Chr(13) Carriage Return 及 Linefeed 鍵
& Chr(10)
vbFormFeed Chr(10) Form feed,微軟 Windows 系統不適用
vbLf Chr(10) Line feed
vbNewLine Chr(13) 換列,Windows使用Chr(13)&Chr(10),
& Chr(10) UNIX系統使用Chr(10)
或 Chr(10)
vbNullChar Chr(0) 字元值為 0
vbNullString 字串值0 與空白字串(字串長度為0)不同
vbTab Chr(9) Tab 鍵
vbVerticalTab Chr(11) Vertical Tab 鍵
● Tristate常數
常數名稱 常數值 說明
------------- ------ ----------
TristateTrue -1 True
TristateFalse 0 False
TristateUseDefault -2 使用預設值
● VarType 常數
常數名稱 常數值 說明
------------- ------ ------------------
vbEmpty 0 無初值設定 (預設)
vbNull 1 不含正確值
vbInteger 2 Integer
vbLong 3 Long
vbSingle 4 Single
vbDouble 5 Double
vbCurrency 6 Currency
vbDate 7 Date
vbString 8 String
vbObject 9 Object
vbError 10 Error
vbBoolean 11 Boolean
vbVariant 12 Variant
vbDataObject 13 Data Access object
vbDecimal 14 Decimal
vbByte 17 Byte
vbArray 8192 Array
H.5 運算子
● 算術運算子
^
次方。例如 Y=A^2。A 的平方值取代原來 Y 值。
-
單減。例如 Y=-A。將 A 值變負號後取代原來 Y 值。
*
乘。例如 Y=A*B。將 A 值乘於 B 值後取代原來 Y 值。
/
除。例如 Y=A/B。將 A 值除於 B 值後取代原來 Y 值。
\
整數除法。例如 Y=A/B。將 A 值除於 B 值後取整數取代原來 Y 值。
Mod
餘數除法。例如 Y=A\B。將 A 值除於 B 值後取餘數取代原來 Y 值。
+
相加。例如 Y=A+B。將 A 值與 B 值相加後取代原來 Y 值。
-
相減。例如 Y=A-B。將 A 值減去 B 值後取代原來 Y 值。
&
字串相連結。例如 Y=A&B。將 A 值與 B 值相連結後取代原來 Y 值。
● 比較運算子
=
相等。 If A=B Then C=True。
<>
不相等。If A<>B Then C=False。
<
小於。If A<B Then C=A。
>
大於。If A>B Then C=B。
<=
不大於。If A<=B Then C=True。
>=
不小於。If A>=B Then C=False。
is
物件相當。SET A=B。If A is B Then C=True。則 C 值為 True。
● 邏輯運算子
Not
邏輯 NOT 運算。例如 NOT A。
And
邏輯 AND 運算。例如 A And B。
Or
邏輯 OR 運算。例如 A Or B。
Xor
邏輯 XOR 運算。例如 A Xor B。
Eqv
邏輯 EQV 運算。例如 A Eqv B。
Imp
邏輯 IMP 運算。例如 A Imp B。
邏輯運算的結果如下表所示。F 表 False,T 表 True。
A B | Not A And Or Xor Eqv Imp
--------+--------------------------------------
F F | T F F T T T
F T | T F T F F T
T F | F F T F F F
T T | F T T T T T
H.6 敘述
[Call] name [argumentlist]
將執行控制權轉至 name 程序或函數。如 Call MyProc(1)。
Dim varname[([subscripts])][, varname[([subscripts])]] . . .
宣告變數 varname 並配置記憶體空間。
Do [{While | Until} condition]
[statements]
[Exit Do]
[statements]
Loop
或
Do
[statements]
[Exit Do]
[statements]
Loop [{While | Until} condition]
當條件 condition 的值為 True 時重複執行 Do 與 Loop 之間的區塊敘述。
Erase array
對於固定長度的陣列 array 重新建立初值,對於動態陣列 array 則取消
原配置的記憶體。
Exit Do
Exit For
Exit Function
Exit Sub
從 Do、For、Function、Sub 等的區塊跳出。
For counter = start To end [Step step]
[statements]
[Exit For]
[statements]
Next
重複執行 For 與 Next 間的敘述指定次數。從 start 開始,到 end 結
束,每一迴圈增加 step,即 start、start+step、start+2*step、...、
end。若省略 step 則預設為 1。
For Each element In group
[statements]
[Exit For]
[statements]
Next [element]
在陣列或類集 (collection) 裡重複執行 For 與 Next 間的敘述。
[Public | Private] Function name [(arglist)]
[statements]
[name = expression]
[Exit Function]
[statements]
[name = expression]
End Function
宣告構成 Function 本體的函數名稱、引數、執行碼。
arglist 引數的語法如下:
[ByVal | ByRef] varname[( )]
ByVal 表傳值呼叫,ByRef 表傳址呼叫。
varname 為引數變數名稱。
If condition Then
[statements]
[ElseIf condition-n Then
[elseifstatements]] . . .
[Else
[elsestatements]]
End If
有條件的執行指定的一組敘述。
若 condition 值為 True 則執行 statements 敘述。
若 condition-n 值為 True 則執行 slesifstatements 敘述。
...
若以上的 condition 值皆為 False 則執行 elsestatements 敘述。
On Error Resume Next
啟動錯誤處理程序並指定程序中下一個要執行的程式碼位置。
Option Explicit
使用於文稿層次,用於強迫所有變數須明顯宣告。
Private varname[([subscripts])][, varname[([subscripts])]] . . .
使用於文稿層次,宣告變數 varname 為私用性質。
Public varname[([subscripts])][, varname[([subscripts])]] . . .
使用於文稿層次,宣告變數 varname 為公用性質。
Randomize [number]
設定隨機數產生器初值。引數 number 可為任何的數值運算式。
ReDim [Preserve] varname(subscripts) [, varname(subscripts)] . . .
使用於程序層次,用於宣告動態陣列變數 varname 並配置記憶體。
Rem comment
或
' comment
註解。
Select Case testexpression
[Case expressionlist-n
[statements-n]] . . .
[Case Else expressionlist-n
[elsestatements-n]]
End Select
若 testexpression 值等於 expressionlist-n 中的一個值則執行
statements-n 敘述。若都不是則執行 elsestatements-n 敘述。
Set objectvar = {objectexpression | Nothing}
設定物件變數 objectvar 的值為 objectexpression 或 Nothing。
[Public | Private] Sub name [(arglist)]
[statements]
[Exit Sub]
[statements]
End Sub
宣告構成 Sub 本體的程序名稱、引數、執行碼。
arglist 引數的語法如下:
[ByVal | ByRef] varname[( )]
ByVal 表傳值呼叫,ByRef 表傳址呼叫。
varname 為引數變數名稱。
While condition
[statements]
Wend
當條件 condition 的值為 True 時重複執行 statements 敘述。
H.7 函數
以下依英文字母順序列出 VBScript 的函數:
Abs(number)
傳回 number 的絕對值。
若 number 為 Null 則傳回 Null。
若 number 為沒有初值的變數則傳回 0。
Abs(2) 與 Abs(-2) 均傳回 2。
Array(arglist)
引數 arglist 為以逗號隔開的數值,指定為陣列元素值。
若省略 arglist 則建立一個 0 元素的陣列。下例 B 值為 30。
Dim A
A=Array(10,20,30)
B=A(2)
Asc(string)
傳回 string 字串第一個字元的 ANSI 的 ASCII 碼。
若 string 為空字串則產生執行時期錯誤。
Atn(number)
傳回 number 的正切值。
CBool(expression)
傳回 expression 的布林值。
CByte(expression)
傳回 expression 的位元組值。
CCur(expression)
傳回 expression 的 Currency 值。
CDate(date)
傳回 date 的日期。
CDbl(expression)
傳回 expression 的雙精度數值。
Chr(charcode)
傳回 charcode 相對應 ANSI 的 ASCII 碼字元。
CInt(expression)
傳回 expression 的整數值。
CLng(expression)
傳回 expression 的長整數值。
Cos(number)
傳回 number 的餘弦值。number 以 radians 計值。
CreateObject(class)
建立並傳回一個 class 物件。如:
Dim ExcelSheet
Set ExcelSheet = CreateObject("Excel.Sheet")
CSng(expression)
傳回 expression 的單精度值。
CStr(expression)
傳回 expression 的字串值。
Date
傳回目前的系統日期。
DateAdd(interval, number, date)
傳回一個 date 加上 number 個 interval 後的日期。下例為 99 年
1 月 1 日加上一個月的日期。
NewDate = DateAdd("m", 1, "1-Jan-99")
DateDiff(interval, date1, date2 [,firstdayofweek [,firstweekofyear]])
傳回兩個日期間的 interval 個數。
DatePart(interval, date [,firstdayofweek [,firstweekofyear]])
傳回 date 的 interval 個數。
DateSerial(year, month, day)
將年year、月month、日day等轉為日期型態並傳回。
DateValue(date)
傳回 date 的日期型態值。
Day(date)
傳回 date 日期中日數的整數值(1-31)。
Exp(number)
傳回 e 的 number 次方值。
e 為自然對數基底(the base of natural logarithms)。
Filter(InputString, Value [, Include [, Compare]])
傳回 Value 在 InputString 一維陣列搜尋的結果。
Fix(number)
傳回 number 的整數值。
FormatCurrency(Expression [,NumDigitsAfterDecimal
[,IncludeLeadingDigit [,UserParentsForNegativeNumbers
[,GroupDigits ]]]])
傳回使用定義於系統控制盤(system control panel)中的currency符號
所格式化後的currency值。
FormatDateTime(Date [,NamedFormat])
傳回格式化後的日期或時間。
FormatNumber(Expression [,NumDigitsAfterDecimal
[,IncludeLeadingDigit [,UserParentsForNegativeNumbers
[,GroupDigits]]]])
傳回格式化後的數字。
FormatPercent(Expression [,NumDigitsAfterDecimal
[,IncludeLeadingDigit [,UserParentsForNegativeNumbers
[,GroupDigits]]]])
傳回格式化後的百分比,尾端跟隨著 %。
GetObject([pathname] [,class])
從指定檔 pathname 傳回一個 ActiveX 物件。
Hex(number)
傳回 number 所代表的16進位值的字串。
Hour(time)
傳回 time 時間中的小時整數值(0-23)。
InputBox(prompt [,title] [,default]
[,xpos] [,ypos] [,helpfile, context])
顯示一個對話框,讓使用者輸入資料,並傳回資料內容。
InStr([start,] string1, string2 [,compare])
傳回子字串 string2 在字串 string1 中的啟始位置,若找不到該子字串
,則傳回 0。
InStrRev(string1, string2 [,start [,compare]])
傳回子字串 string2 在字串 string1 中從尾端算起的位置,若找不到該
子字串,則傳回 0。
Int(number)
傳回小於或等於 number 的整數值。
IsArray(varname)
若 varname 為陣列則傳回 True,否則傳回 False。
IsDate(expression)
若 expression 為日期則傳回 True,否則傳回 False。
IsEmpty(expression)
若 expression 為 empty 則傳回 True,否則傳回 False。
IsNull(expression)
若 expression 為 Null 則傳回 True,否則傳回 False。
IsNumeric(expression)
若 expression 為數字則傳回 True,否則傳回 False。
IsObject(expression)
若 expression 為物件則傳回 True,否則傳回 False。
Join(list [, delimiter])
傳回一維陣列 list 中每一個元素字串的連結字串,若省略 delimiter
則以空白隔開。
LBound(arrayname [, dimension])
傳回 arrayname 第 dimension 維的最小索引值。若省略 dimension
則預設為 1。
LCase(string)
將 string 轉換為英文小寫字母。
Left(string, length)
傳回 string 字串最左邊 length 個字元。
Len(string | varname)
傳回 string 字串或 varname 字串變數的長度。
LoadPicture(picturename)
傳回從 picturename 檔案載入的物件。
Log(number)
傳回 number 數值的對數值。
LTrim(string)
將 string 字串前的空白去除。
Mid(string, start [, length])
傳回 string 字串中由 start 開始,長度 length 的子字串。
Minute(time)
傳回 time 時間中的分鐘數值(0-59)。
Month(date)
傳回 date 日期中的月份數值(1-12)。
MonthName(month [, abbreviate])
傳回 month 數值相對應的月份名稱。若 abbreviate 值為 True 則傳回
月份簡稱。
MsgBox(prompt [, buttons] [, title] [, helpfile, context])
顯示一個對話框,當用戶選擇適當按鈕後,將該按鈕值傳回。
Now
傳回現在的系統時間。
Oct(number)
將 number 數值轉為八進位後傳回。
Replace(expression,find,replacewith [,start [,count [,compare]]])
在 expression 字串中找到 find 子字串後以 replacewith 字串取代後
傳回。
Right(string, length)
傳回 string 字串最右邊的 length 個字元。
Rnd[(number)]
傳回一個介於 0 (含) 至 1 (不含) 間的隨機數。
Round(expression [, numdecimalplaces])
將 expression 第 numdecimalplaces 為小數四捨五入後傳回。
RTrim(string)
去除 string 字串尾部的空白並傳回。
ScriptEngine()
傳回使用中的文稿語言字串。VBScript 或 JScript 或 VBA。
ScriptEngineBuildVersion()
傳回使用中的文稿語言 build 版本。
ScriptEngineMajorVersion()
傳回使用中的文稿語言主版本。
ScriptEngineMinorVersion()
傳回使用中的文稿語言副版本。
Second(time)
傳回 time 時間的秒數(0-59)。
Sgn(number)
傳回 number 的符號,當 number 大於 0 傳回 1,等於 0,傳回 0,
小於 0 傳回 -1。
Sin(number)
傳回 number 的正弦值。number 以 radians 計值。
Space(number)
傳回一個長度為 number 的空白字串。
Split(expression [, delimiter [, count [, compare]]])
將以 delimiter 為隔開符號的 expression 字串剖開後存入一個一維陣
列後傳回。
Sqr(number)
傳回 number 的平方值。
StrComp(string1, string2 [, compare])
將 string1、string2 二字串相比較,結果以整數表示,若 string1 較
小則傳回 -1,相等則傳回 0,較大則傳回 1。若其中有一個為 Null 則
傳回 Null。
String(number, character)
傳回一個 number 個 character 字元的字串。
StrReverse(string)
傳回一個 string 字串的反向字串。
Tan(number)
傳回 number 的正切值。number 以 radians 計值。
Time
傳回目前的系統時間。
TimeSerial(hour, minute, second)
將時hour、分minute、秒second值轉為日期型態並傳回。
TimeValue(time)
將 time 的時間轉為日期型態並傳回。
Trim(string)
去除 string 字串頭尾的空白並傳回。
TypeName(varname)
傳回變數名稱 varname 的 Variant 次型態 (subtype) 字串。可能值為
Byte、Integer、Long、Single、Double、Currency、Decimal、Date、
String、Boolean、Empty、Null、<ObjectType>、Object、Unknown、
Nothing、Error。
UBound(arrayname [, dimension])
傳回 arrayname 第 dimension 維的最大索引值。若省略 dimension
則預設為 1。
UCase(string)
將 string 字串轉為英文大寫字母後傳回。
VarType(varname)
傳回 varname 變數的次型態整數值。
整數值 常數 次型態
------ ------------ --------------------------------------
0 vbEmpty Empty (uninitialized)
1 vbNull Null (not valid data)
2 vbInteger Integer
3 vbLong Long integer
4 vbSingle Single-precision floating-point number
5 vbDouble Double-precision floating-point number
6 vbCurrency Currency
7 vbDate Date
8 vbString String
9 vbObject Automation object
10 vbError Error
11 vbBoolean Boolean
12 vbVariant Variant (used only with arrays of Variants)
13 vbDataObject A data-access object
17 vbByte Byte
8192 vbArray Array
Weekday(date [, firstdayofweek])
傳回 date 日期所代表的星期,1 表星期日,7 表星期六。
WeekdayName(weekday, abbreviate, firstdayofweek)
傳回 weekday 數值的星期名稱。
Year(date)
傳回 date 日期中的年份。
沒有留言:
張貼留言