Visual Biasc 函數速查

Calendar 常數

可在代碼中的任何地方用下列常數代替實際值:

常數 描述
vbCalGreg 0 指出使用的是陽曆。
vbCalHijri 1 指出使用的是伊斯蘭曆法。

Color 常數

可在代碼中的任何地方用下列常數代替實際值:

常數 描述
vbBlack 0x0 黑色
vbRed 0xFF 紅色
vbGreen 0xFF00 綠色
vbYellow 0xFFFF 黃色
vbBlue 0xFF0000 藍色
vbMagenta 0xFF00FF 紫紅色
vbCyan 0xFFFF00 青色
vbWhite 0xFFFFFF 白色

Comparison常數

下列常數由 Visual Basic for Applications 中的類型庫定義,可用來在代碼中的任何地方代替實際值:

常數 描述
VbUseCompareOption -1 使用Option Compare語句的設置進行比較。
VbBinaryCompare 0 進行二進制的比較。
VbTextCompare 1 進行文字的比較。
vbDatabaseCompare 2 用於 Microsoft Access(僅限於Windows),進行以數據庫所含信息爲基礎的比較。

Compiler 常數

Visual Basic for Applications 定義了一些不能與 #If...Then...#Else 指令一起使用的常數。這些常數除了其範圍是全局的;也就是說,除了可在工程中到處應用,在功能上與 #If...Then...#Else 指令定義的常數相同。

在 16 位開發平臺上,編譯常數定義如下:

常數 描述
Win16 True 指出開發環境是 16 位。
Win32 False 指出開發環境不是 32 位。

在 32 位開發平臺上,編譯常數定義如下:

常數 描述
Win16 False 指出開發環境不是 16 位。
Win32 True 指出開發環境是 32 位。

Date 常數

可在代碼中的任何地方用下列常數代替實際值:

參數值

firstdayofweek 參數具有以下這些值:

常數 描述
vbUseSystem 0 使用 NLS API 設置。
vbSunday 1 星期日(缺省)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六

firstdayofyear 參數具有以下這些值:

常數 描述
vbUseSystem 0 使用 NLS API 設置。
VbUseSystemDayOfWeek 0 使用系統設置中爲星期的第一天指定的星期數。
VbFirstJan1 1 由 1 月 1 日所在的那個星期開始(缺省)。
vbFirstFourDays 2 由新的一年中第一個至少有 4 天的星期開始。
vbFirstFullWeek 3 由一年中第一個完整的星期開始。

返回值

常數 描述
vbSunday 1 星期日
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六

日期格式常數

僅當您的工程對包含這些常數定義的相應類型庫有一個顯式引用時,纔可以使用這些常數 。

常數 描述
vbGeneralDate 0 顯示日期和/或時間。對於一個實數,顯示日期和時間。如果沒有小數部分,則僅顯示日期。如果沒有整數部分,則僅顯示時間。日期和時間的顯示由系統設置值確定。
vbLongDate 1 用計算機區域設置值指定的長日期格式顯示日期。
vbShortDate 2 用計算機區域設置值指定的短日期格式顯示日期。
vbLongTime 3 用計算機區域設置值指定的長時間格式顯示時間。
vbShortTime 4 用計算機區域設置值指定的短時間格式顯示時間。

Dir、GetAttr 和 SetAttr 常數

可在代碼中的任何地方用下列常數代替實際值:

常數 描述
vbNormal 0 正常的(Dir SetAttr 的缺省值)
vbReadOnly 1 只讀的
vbHidden 2 隱藏的
vbSystem 4 系統文件
vbVolume 8 卷標
vbDirectory 16 目錄或文件夾
vbArchive 32 文件自上一次備份後已經改變

驅動器類型常數

僅當您的工程對包含這些常數定義的相應類型庫有一個顯式引用時,纔可以使用這些常數。

常數 描述
Unknown 0 不能確定驅動器類型。
Removable 1 驅動器具有可刪除介質。包括所有軟盤驅動器和許多其它種類的存儲設備。
Fixed 2 驅動器具有固定介質(不可刪除的)。包括可刪除硬盤在內的所有硬盤驅動器。
Remote 3 網絡驅動器。包括在網絡上任何地方都可以共享的驅動器。
CDROM 4 驅動器是一個CD-ROM。包括只讀的CD-ROM和可讀寫的CD-ROM。
RAMDisk 5 驅動器是本地計算機上的一塊隨機存取內存(RAM),它工作起來就象是磁盤驅動器一樣。

文件屬性常數

僅當您的工程對包含這些常數定義的相應類型庫有一個顯式引用時,纔可以使用這些常數。

常數 描述
Normal 0 普通文件。沒有設置屬性。
ReadOnly 1 只讀文件。屬性是可讀/寫。
Hidden 2 隱藏文件。屬性是可讀/寫。
System 4 系統文件。屬性是可讀/寫。
Volume 8 磁盤驅動器卷標。屬性是隻讀。
Directory 16 文件夾或目錄。屬性是隻讀。
Archive 32 自上次備份後已經改變的文件。屬性是可讀/寫。
Alias 64 鏈接或快捷方式。屬性是隻讀。
Compressed 128 壓縮文件。屬性是隻讀。

文件輸入/輸出常數

僅當您的工程對包含這些常數定義的相應類型庫有一個顯式引用時,纔可以使用這些常數。

常數 描述
ForReading 1 打開文件用於只讀操作。不能對文件進行寫操作。
ForWriting 2 打開文件用於寫操作。如果存在具有相同文件名的文件,文件原有的內容被覆蓋。
ForAppending 8 打開文件並向文件的結尾寫入。

Dir、GetAttr 和 SetAttr 常數?

可在代碼中的任何地方用下列常數代替實際值:

常數 描述
vbNormal 0 正常的(Dir SetAttr 的缺省值)
vbReadOnly 1 只讀的
vbHidden 2 隱藏的
vbSystem 4 系統文件
vbVolume 8 卷標
vbDirectory 16 目錄或文件夾
vbArchive 32 文件自上一次備份後已經改變

IMEStatus 常數

可在代碼中的任何地方用下列常數代替實際值。

日文國別的常數如下所示:

常數 描述
vbIMEModeNoControl 0 沒有安裝 IME(缺省)
vbIMEModeOn 1 打開 IME
vbIMEModeOff 2 關閉 IME
vbIMEModeDisable 3 無效的 IME
vbIMEModeHiragana 4 完整寬度 Hiragana 模式
vbIMEModeKatakana 5 完整寬度 Katakana 模式
vbIMEModeKatakanaHalf 6 半寬度 Katakana 模式
vbIMEModeAlphaFull 7 完整寬度 Alphanumeric 模式
vbIMEModeAlpha 8 半寬度 Alphanumeric 模式

韓國地區的常數如下所示:

常數值描述

vbIMEModeAlphaFull7完整寬度 Alphanumeric 模式

vbIMEModeAlpha8半寬度 Alphanumeric 模式

vbIMEModeHangulFull9完整寬度 Hangul 模式

vbIMEModeHangul10半寬度 Hangul 模式

中文地區的常數值如下:

常數值描述

vbIMEModeNoControl0沒有安裝 IME (缺省)

vbIMEModeOn1IME 打開

vbIMEModeOff2IME off


Keycode 常數

可在代碼中的任何地方用下列常數代替實際值:

常數 描述
vbKeyLButton 0x1 鼠標左鍵
vbKeyRButton 0x2 鼠標右鍵
vbKeyCancel 0x3 CANCEL 鍵
vbKeyMButton 0x4 鼠標中鍵
vbKeyBack 0x8 BACKSPACE 鍵
vbKeyTab 0x9 TAB 鍵
vbKeyClear 0xC CLEAR 鍵
vbKeyReturn 0xD ENTER 鍵
vbKeyShift 0x10 SHIFT 鍵
vbKeyControl 0x11 CTRL 鍵
vbKeyMenu 0x12 MENU 鍵
vbKeyPause 0x13 PAUSE 鍵
vbKeyCapital 0x14 CAPS LOCK 鍵
vbKeyEscape 0x1B ESC 鍵
vbKeySpace 0x20 SPACEBAR 鍵
vbKeyPageUp 0x21 PAGE UP 鍵
vbKeyPageDown 0x22 PAGE DOWN 鍵
vbKeyEnd 0x23 END 鍵
vbKeyHome 0x24 HOME 鍵
vbKeyLeft 0x25 LEFT ARROW 鍵
vbKeyUp 0x26 UP ARROW 鍵
vbKeyRight 0x27 RIGHT ARROW 鍵
vbKeyDown 0x28 DOWN ARROW 鍵
vbKeySelect 0x29 SELECT 鍵
vbKeyPrint 0x2A PRINT SCREEN 鍵
vbKeyExecute 0x2B EXECUTE 鍵
vbKeySnapshot 0x2C SNAPSHOT 鍵
vbKeyInsert 0x2D INSERT 鍵
vbKeyDelete 0x2E DELETE 鍵
vbKeyHelp 0x2F HELP 鍵
vbKeyNumlock 0x90 NUM LOCK 鍵

A 至 Z 鍵與 A – Z 字母的 ASCII 碼相同:

常數 描述
vbKeyA 65 A 鍵
vbKeyB 66 B 鍵
vbKeyC 67 C 鍵
vbKeyD 68 D 鍵
vbKeyE 69 E 鍵
vbKeyF 70 F 鍵
vbKeyG 71 G 鍵
vbKeyH 72 H 鍵
vbKeyI 73 I 鍵
vbKeyJ 74 J 鍵
vbKeyK 75 K 鍵
vbKeyL 76 L 鍵
vbKeyM 77 M 鍵
vbKeyN 78 N 鍵
vbKeyO 79 O 鍵
vbKeyP 80 P 鍵
vbKeyQ 81 Q 鍵
vbKeyR 82 R 鍵
vbKeyS 83 S 鍵
vbKeyT 84 T 鍵
vbKeyU 85 U 鍵
vbKeyV 86 V 鍵
vbKeyW 87 W 鍵
vbKeyX 88 X 鍵
vbKeyY 89 Y 鍵
vbKeyZ 90 Z 鍵

0 至 9 鍵與數字 0 – 9 的 ASCII 碼相同:

常數 描述
vbKey0 48 0 鍵
vbKey1 49 1 鍵
vbKey2 50 2 鍵
vbKey3 51 3 鍵
vbKey4 52 4 鍵
vbKey5 53 5 鍵
vbKey6 54 6 鍵
vbKey7 55 7 鍵
vbKey8 56 8 鍵
vbKey9 57 9 鍵

下列常數代表數字鍵盤上的鍵:

常數 描述
vbKeyNumpad0 0x60 0 鍵
vbKeyNumpad1 0x61 1 鍵
vbKeyNumpad2 0x62 2 鍵
vbKeyNumpad3 0x63 3 鍵
vbKeyNumpad4 0x64 4 鍵
vbKeyNumpad5 0x65 5 鍵
vbKeyNumpad6 0x66 6 鍵
vbKeyNumpad7 0x67 7 鍵
vbKeyNumpad8 0x68 8 鍵
vbKeyNumpad9 0x69 9 鍵
vbKeyMultiply 0x6A MULTIPLICATION SIGN (*) 鍵
vbKeyAdd 0x6B PLUS SIGN (+) 鍵
vbKeySeparator 0x6C ENTER 鍵
vbKeySubtract 0x6D MINUS SIGN (-) 鍵
vbKeyDecimal 0x6E DECIMAL POINT (.) 鍵
vbKeyDivide 0x6F DIVISION SIGN (/) 鍵

下列常數代表功能鍵:

常數 描述
vbKeyF1 0x70 F1 鍵
vbKeyF2 0x71 F2 鍵
vbKeyF3 0x72 F3 鍵
vbKeyF4 0x73 F4 鍵
vbKeyF5 0x74 F5 鍵
vbKeyF6 0x75 F6 鍵
vbKeyF7 0x76 F7 鍵
vbKeyF8 0x77 F8 鍵
vbKeyF9 0x78 F9 鍵
vbKeyF10 0x79 F10 鍵
vbKeyF11 0x7A F11 鍵
vbKeyF12 0x7B F12 鍵
vbKeyF13 0x7C F13 鍵
vbKeyF14 0x7D F14 鍵
vbKeyF15 0x7E F15 鍵
vbKeyF16 0x7F F16 鍵


Miscellaneous 常數

下列常數由 Visual Basic for Applications 中的類型庫定義,可用來在代碼中的任何地方代替實際值:

常數 等於 描述
vbCrLf Chr(13) + Chr(10) 回車符與換行符結合
vbCr Chr(13) 回車符
vbLf Chr(10) 換行符
vbNewLine Chr(13) + Chr(10) 平臺指定的新行字符;適用於當前平臺
vbNullChar Chr(0) 值爲 0 的字符
vbNullString 值爲 0 的字符串 用來調用外部過程;與長度爲零的字符串 ("") 不同
vbObjectError -2147221504 用戶定義的錯誤號應當大於該值,例如:
Err.Raise Number = vbObjectError + 1000
vbTab Chr(9) Tab 字。
vbBack Chr(8) 退格字符
vbFormFeed Chr(12) 在 Microsoft Windows 中沒有作用
vbVerticalTab Chr(11) 在 Microsoft Windows 中沒有作用


MsgBox 常數

可在代碼中的任何地方使用下列常數代替實際值:

MsgBox 參數

常數 描述
vbOKOnly 0 只有 OK 按鈕(缺省值)
vbOKCancel 1 OKCancel 按鈕
vbAbortRetryIgnore 2 AbortRetry,和 Ignore 按鈕
vbYesNoCancel 3 YesNo,和 Cancel 按鈕
vbYesNo 4 YesNo 按鈕
vbRetryCancel 5 RetryCancel 按鈕
vbCritical 16 關鍵消息
vbQuestion 32 警告詢問
vbExclamation 48 警告消息
vbInformation 64 通知消息
vbDefaultButton1 0 第一個按鈕是缺省的(缺省值)
vbDefaultButton2 256 第二個按鈕是缺省的
vbDefaultButton3 512 第三個按鈕是缺省的
vbDefaultButton4 768 第四個按鈕是缺省的
vbApplicationModal 0 應用程序形態的消息框(缺省值)
vbSystemModal 4096 系統強制返回的消息框
vbMsgBoxHelpButton 16384 添加Help按鈕到消息框
VbMsgBoxSetForeground 65536 指定消息框窗口作爲前景窗口
vbMsgBoxRight 524288 文本是右對齊的
vbMsgBoxRtlReading 1048576 指定在希伯來語和阿拉伯語系統中,文本應當顯示爲從右到左讀

MsgBox 返回值

常數 描述
vbOK 1 按下 OK 按鈕
vbCancel 2 按下 Cancel 按鈕
vbAbort 3 按下 Abort 按鈕
vbRetry 4 按下 Retry 按鈕
vbIgnore 5 按下 Ignore 按鈕
vbYes 6 按下 Yes 按鈕
vbNo 7 按下 No 按鈕


QueryClose常數

下列常數可以用於代碼中的任何位置以代替實際值:

常數 描述
vbFormControlMenu 0 用戶從窗體上的Control 菜單選擇Close 命令。
vbFormCode 1 Unload 語句被從代碼中調用。
vbAppWindows 2 當前 Microsoft Windows 操作環境會話結束。
vbAppTaskManager 3 Windows Task Manager 正在關閉應用程序。

Dir、GetAttr 和 SetAttr 常數?

可在代碼中的任何地方用下列常數代替實際值:

常數 描述
vbNormal 0 正常的(Dir SetAttr 的缺省值)
vbReadOnly 1 只讀的
vbHidden 2 隱藏的
vbSystem 4 系統文件
vbVolume 8 卷標
vbDirectory 16 目錄或文件夾
vbArchive 32 文件自上一次備份後已經改變

Shell 常數

可在代碼中的任何地方使用下列常數代替實際值:

常數 描述
vbHide 0 窗口是隱藏的,並且焦點被傳遞給隱藏窗口。
vbNormalFocus 1 窗口擁有焦點,並且恢復到原來的大小與位置。
vbMinimizedFocus 2 窗口縮小爲圖符並擁有焦點。
vbMaximizedFocus 3 窗口最大化並擁有焦點。
vbNormalNoFocus 4 窗口被恢復到最近一次的大小與位置。當前活動窗口仍爲活動窗口。
vbMinimizeNoFocus 6 窗口縮小爲圖符。當前活動窗口仍爲活動窗口。

特殊文件夾常數

僅當您的工程對包含這些常數定義的相應類型庫有一個顯式引用時,纔可以使用這些常數。

常數 描述
WindowsFolder 0 Windows文件夾包含由Windows操作系統安裝的文件。
SystemFolder 1 System(系統)文件夾包含庫、字體和設備驅動程序。
TemporaryFolder 2 Temp(臨時)文件夾用於存儲臨時文件。它的路徑可在TMP環境變量中找到。


StrConv 常數

可在代碼中的任何地方使用下列常數代替實際值:

Constant 描述
vbUpperCase 1 將字符串轉換成大寫字符。
vbLowerCase 2 將字符串轉換成小寫字符。
vbProperCase 3 將字符串中每個詞的第一個字母轉換成大寫。
vbWide 4 將字符串中的窄(單字節)字符轉換成寬(雙字節)字符。適用於遠東地區。
vbNarrow 8 將字符串中的寬(雙字節)字符轉換成窄(單字節)字符。適用於遠東地區。
vbKatakana 16 將字符串中的 Hiragana 字符轉換成 Katakana 字符;只適用於日文地區。
vbHiragana 32 將字符串中的 Katakana 字符轉換成 Hiragana 字符;只適用於日文地區。
vbUnicode 64 利用缺省的系統代碼頁將字符串轉換成 Unicode。
vbFromUnicode 128 將字符串由 Unicode 轉換成缺省的系統代碼頁。


System Color 常數

可在代碼中的任何地方用下列常數代替實際值:

常數 描述
vbScrollBars 0x80000000 滾動條顏色
vbDesktop 0x80000001 桌面顏色
vbActiveTitleBar 0x80000002 活動窗口的標題欄顏色
vbInactiveTitleBar 0x80000003 非活動窗口的標題欄顏色
vbMenuBar 0x80000004 菜單背景色
vbWindowBackground 0x80000005 窗口背景色
vbWindowFrame 0x80000006 窗口框架顏色
vbMenuText 0x80000007 菜單文本顏色
vbWindowText 0x80000008 窗口文本顏色
vbTitleBarText 0x80000009 標題、調整框和滾動箭頭的文本顏色
vbActiveBorder 0x8000000A 活動窗口邊框顏色
vbInactiveBorder 0x8000000B 非活動窗口邊框顏色
vbApplicationWorkspace 0x8000000C 多文檔界面 (MDI) 應用程序的背景色
vbHighlight 0x8000000D 控件中選中項目的背景色
vbHighlightText 0x8000000E 控件中選中項目的文本顏色
vbButtonFace 0x8000000F 命令按鈕表面陰影顏色
vbButtonShadow 0x80000010 命令按鈕邊緣陰影顏色
vbGrayText 0x80000011 灰色(無效)文本
vbButtonText 0x80000012 下壓按鈕文本顏色
vbInactiveCaptionText 0x80000013 非活動標題文本顏色
vb3DHighlight 0x80000014 3-D 顯示元素的突出顯示顏色
vb3DDKShadow 0x80000015 3-D 顯示元素的最深陰影顏色
vb3DLight 0x80000016 vb3Dhighlight 之外最亮的 3-D 顏色
vbInfoText 0x80000017 工具提示文本顏色
vbInfoBackground 0x80000018 工具提示背景色


三態常數

僅當您的工程對包含這些常數定義的相應類型庫有一個顯式引用時,纔可以使用這些常數。

常數 描述
TristateTrue –1 True
TristateFalse 0 False
TristateUseDefault –2 使用缺省設置值。

VarType 常數

可在代碼中的任何地方用下列常數代替實際值:

常數 描述
vbEmpty 0 未初始化(缺省值)
vbNull 1 不含任何有效數據
vbInteger 2 Integer
vbLong 3 長整數
vbSingle 4 單精度浮點數
vbDouble 5 雙精度浮點數
vbCurrency 6 Currency
vbDate 7 Date
vbString 8 String
vbObject 9 對象
vbError 10 錯誤
vbBoolean 11 布爾
vbVariant 12 Variant(只用於變體的數組類型)
vbDataObject 13 數據訪問對象
vbDecimal 14 Decimal
vbByte 17 Byte
vbUserDefinedType 36 包含用戶定義類型的變量
vbArray 8192 數組


Visual Basic 常數

Visual Basic for Applications 定義了一些常數,使程序設計變得更爲簡單。下列常數可在程序代碼中的任何地方代替實際值:

Calendar 常數

Color 常數

Compiler 常數

Date 常數

Dir、GetAttr 和 SetAttr 常數

IMEStatus 常數

Instr、StrComp 常數

Keycode 常數

Miscellaneous 常數

MsgBox 常數

QueryClose 常數

QueryClose 常數

Shell 常數

StrConv 常數

System Color 常數

VarType 常數


Boolean 數據類型

Boolean 變量存儲爲 16 位(2 個字節)的數值形式,但只能是 True 或是 FalseBoolean 變量的值顯示爲 True False(在使用 Print 的時候),或者 #TRUE##FALSE#(在使用 Write # 的時候)。使用關鍵字 TrueFalse 可將 Boolean 變量賦值爲這兩個狀態中的一個。

當轉換其他的數值類型爲 Boolean 值時,0 會轉成 False,而其他的值則變成 True。當轉換 Boolean 值爲其他的數據類型時,False 成爲 0,而 True 成爲 -1。


Byte 數據類型

Byte 變量存儲爲單精度型、無符號整型、8 位(1個字節)的數值形式,範圍在 0 至 255 之間。

Byte 數據類型在存儲二進制數據時很有用。


Currency 數據類型

Currency 變量存儲爲 64 位(8 個字節)整型的數值形式,然後除以 10,000 給出一個定點數,其小數點左邊有 15 位數字,右邊有 4 位數字。這種表示法的範圍可以從 -922,337,203,685,477.5808 到 922,337,203,685,477.5807。Currency 的類型聲明字符爲at號 (@)。

Currency 數據類型在貨幣計算與定點計算中很有用,在這種場合精度特別重要。


Date 數據類型

Date 變量存儲爲 IEEE 64 位(8 個字節)浮點數值形式,其可以表示的日期範圍從 100 年 1 月 1 日到 9999 年 12 月 31 日,而時間可以從 0:00:00 到 23:59:59。任何可辨認的文本日期都可以賦值給 Date 變量。日期文字須以數字符號 (#) 擴起來,例如,#January 1, 1993##1 Jan 93#

Date 變量會根據計算機中的短日期格式來顯示。時間則根據計算機的時間格式(12 或 24 小時制)來顯示。

當其他的數值類型要轉換爲 Date 型時,小數點左邊的值表示日期信息,而小數點右邊的值則表示時間。午夜爲 0 而中午爲 0.5。負整數表示 1899 年 12 月 30 日之前的日期。


Decimal 數據類型

Decimal 變量存儲爲 96 位(12 個字節)無符號的整型形式,併除以一個 10 的冪數。這個變比因子決定了小數點右面的數字位數,其範圍從 0 到 28。變比因子爲 0(沒有小數位)的情形下,最大的可能值爲 +/-79,228,162,514,264,337,593,543,950,335。而在有 28 個小數位的情況下,最大值爲 +/-7.9228162514264337593543950335,而最小的非零值爲 +/-0.0000000000000000000000000001。

注意 此時,Decimal 數據類型只能在 Variant中使用,也就是說,不能聲明一變量爲 Decimal 的類型。不過可用 Cdec 函數,創建一個子類型爲 Decimal Variant


Double 數據類型

Double(雙精度浮點型)變量存儲爲 IEEE 64 位(8 個字節)浮點數值的形式,它的範圍在負數的時候是從 -1.79769313486232E308 到 -4.94065645841247E-324,而正數的時候是從 4.94065645841247E-324 到 1.79769313486232E308。Double 的類型聲明字符是數字符號 (#)。


Integer 數據類型

Integer 變量存儲爲 16位(2 個字節)的數值形式,其範圍爲 -32,768 到 32,767 之間。Integer 的類型聲明字符是百分比符號 (%)。

也可以用 Integer 變量來表示枚舉值。枚舉值可包含一個有限集合,該集合包含的元素都是唯一的整數,每一個整數都在它使用時的上下文當中有其特殊意義。枚舉值爲在已知數量的選項中做出選擇提供了一種方便的方法,例如,black = 0,white = 1 等等。較好的編程作法是使用 Const 語句將每個枚舉值定義成常數。


Long 數據類型

Long(長整型)變量存儲爲 32 位(4 個字節)有符號的數值形式,其範圍從 -2,147,483,648 到 2,147,483,647。Long 的類型聲明字符爲和號 (&)。


Object 數據類型

Object 變量存儲爲 32 位(4 個字節)的地址形式,其爲對象的引用。利用 Set 語句,聲明爲 Object 的變量可以賦值爲任何對象的引用。

注意 雖然以 Object 類型聲明的變量足以適應包含對各種對象的引用,但是綁定到變量引用的對象總是在晚期(運行時)綁定。要強迫在早期(編譯時間)綁定的話,須將對象的引用賦值給用特定類名稱聲明的變量。


Single 數據類型

Single(單精度浮點型)變量存儲爲 IEEE 32 位(4 個字節)浮點數值的形式,它的範圍在負數的時候是從 -3.402823E38 到 -1.401298E-45,而在正數的時候是從 1.401298E-45 到 3.402823E38。Single 的類型聲明字符爲感嘆號 (!)。


String 數據類型

字符串有兩種:變長與定長的字符串。

  • 變長字符串最多可包含大約 20 億 ( 2^31)個字符。

  • 定長字符串可包含 1 到大約 64K ( 2^16 ) 個字符。

注意 Public 定長字符串不能在類模塊中使用。

String 之字符碼的範圍是 0 到 255。字符集的前 128 個字符(0 到 127)對應於標準的 U.S. 鍵盤上的字符與符號。這前 128 個字符與 ASCII 字符集中所定義的相同。後 128 個字符(128 到 255)則代表特殊字符,例如國際字符,重音符號,貨幣符號及分數。String 的類型聲明字符爲美元號 ($)。


用戶定義數據類型

可以是任何用 Type 語句定義的數據類型。用戶自定義類型可包含一個或多個某種數據類型的數據元素、數組或一個先前定義的用戶自定義類型。例如:

Type MyType
   MyName As String   '定義字符串變量存儲一個名字。
   MyBirthDate As Date   '定義日期變量存儲一個生日。
   MySex As Integer   '定義整型變量存儲性別
End Type            '0 爲女,1 爲男)

Variant 數據類型

Variant 數據類型是所有沒被顯式聲明(用如 DimPrivate、PublicStatic等語句)爲其他類型變量的數據類型。Variant 數據類型並沒有類型聲明字符。

Variant 是一種特殊的數據類型,除了定長 String 數據及用戶定義類型外,可以包含任何種類的數據。Variant 也可以包含 EmptyErrorNothing Null等特殊值。可以用 VarType 函數或 TypeName 函數來決定如何處理 Variant 中的數據。

數值數據可以是任何整型或實型數,負數時範圍從 -1.797693134862315E308 到 -4.94066E-324,正數時則從 4.94066E-324 到 1.797693134862315E308。通常,數值Variant 數據保持爲其 Variant 中原來的數據類型。例如,如果把一個 Integer賦值給 Variant,則接下來的運算會把此 Variant 當成 Integer 來處理。然而,如果算術運算針對含 Byte、Integer、Long 或 Single 之一的Variant 執行,並當結果超過原來數據類型的正常範圍時,則在 Variant 中的結果會提升到較大的數據類型。如 Byte 則提升到 IntegerInteger 則提升到 Long,而 LongSingle 則提升爲 Double。當 Variant 變量中有 Currency、Decimal 及 Double 值超過它們各自的範圍時,會發生錯誤。

可以用 Variant 數據類型來替換任何數據類型,這樣會更有適應性。如果 Variant 變量的內容是數字,它可以用字符串來表示數字或是用它實際的值來表示,這將由上下文來決定,例如:

Dim MyVar As Variant
MyVar = 98052

在前面的例子中,MyVar 內有一實際值爲 98052 的數值。像期望的那樣,算術運算子可以對 Variant 變量運算,其中包含數值或能被解釋爲數值的字符串數據。如果用 + 運算子來將 MyVar 與其他含有數字的 Variant 或數值類型的變量相加,結果便是一算術和。

Empty 值用來標記尚未初始化(給定初始值)的Variant 變量。內含 Empty Variant 在數值的上下文中表示 0,如果是用在字符串的上下文中則表示零長度的字符串 ("")。

不應將 Empty 與 Null 弄混。Null 是表示 Variant 變量確實含有一個無效數據。

Variant 中,Error 是用來指示在過程中出現錯誤時的特殊值。然而,不像對其他種類的錯誤那樣,程序並不產生普通的應用程序級的錯誤處理。這可以讓程序員,或應用程序本身,根據此錯誤值採取另外的行動。可以用 CVErr 函數將實數轉換爲錯誤值來產生 Error 值。


#Const 指令

用來定義 Visual Basic 的條件編譯常數。

語法

#Const constname = expression

#Const 編譯指令的語法具有以下幾個部分:

部分 描述
constname 必要;Variant (String)。常數;名稱要遵守變量命名的約定。
expression 必要。文字、其他的條件編譯常數或包含除了 Is 以外的算術或邏輯運算符的任意組合。

說明

條件編譯常數在其出現的模塊中總是 Private。不可能利用 #Const 指令建立 Public 編譯常數。Public 編譯常數只能在用戶接口中建立。

expression 中只能使用編譯常數及文字。使用一個用 Const 定義的標準常數,或者使用一個未定義的常數,都會導致錯誤發生。反之,用 #Const 關鍵字定義的常數也只能用於條件編譯。

不管條件編譯常數在程序中的位置如何,都總是在模塊級別中進行計算。


#If...Then...#Else 指令

條件編譯已選擇的 Visual Basic 代碼塊。

語法

#If expression Then

statements

[#ElseIf expression-n Then

[elseifstatements]]

[#Else

[elsestatements]]

#End If

#If...Then...#Else 指令的語法具有以下幾個部分:

部分 描述
expression 必要。包含一個或多個條件編譯常數、文字與運算符的任何表達式,其值爲 TrueFalse
statements 必要。Visual Basic 程序行或編譯指令,如果關聯的表達式爲 True,則運行它們。
expression-n 可選。由一或多個條件編譯常數、文字和運算符組成的任何一個表達式,其值爲 TrueFalse
elseifstatements 可選。一個或多個程序行或編譯命令,如果 expression-nTrue,則運行它們。
elsestatements 可選。一個或多個程序行或編譯命令,如果以前的expressionexpression-n 中沒有一個爲 True,則運行它們。

說明

#If...Then...#Else 指令的作用與 If...Then...Else 語句相同,其差異在於 #If#Else#ElseIf,及 #End If 指令沒有單獨成行的形式,也就是說,在指令所在的那一行,不能有其他代碼出現。條件編譯通常用來編譯不同平臺上的同一個程序。也可以用來避免調試程序代碼出現在可執行程序中。條件編譯時被排除的程序代碼在最後的可執行文件中被完全略去,所以不會對程序的大小或功能有任何影響。

無論結果如何,都要計算所有表達式。所以,在表達式中用到的所有常數都必須加以定義— 任何未定義的常數都會被當作 Empty 來計算取值。

注意   Option Compare 語句不會影響 #If #ElseIf 語句中的表達式。條件編譯指令中的表達式總是用 Option Compare Text 計算值。


Abs 函數

返回參數的絕對值,其類型和參數相同。

語法

Abs(number)

必要的 number 參數是任何有效的數值表達式,如果 number 包含 Null,則返回 Null,如果 number 是未初始化的變量,則返回 0。

說明

一個數的絕對值是將正負號去掉以後的值。例如,ABS(-1)ABS(1) 都返回 1


Array 函數

返回一個包含數組的 Variant。

語法

Array(arglist)

所需的 arglist 參數是一個用逗號隔開的值表,這些值用於給 Variant 所包含的數組的各元素賦值。如果不提供參數,則創建一個長度爲 0 的數組。

說明

用來表示數組元素的符號由變量名、圓括號以及括號中的所需元素的索引號組成。在下面的示例中,第一條語句創建一個 Variant 的變量 A。第二條語句將一個數組賦給變量 A。最後一條語句將該數組的第二個元素的值賦給另一個變量。

Dim A As Variant
A = Array(10,20,30)
B = A(2)

使用 Array 函數創建的數組的下界受 Option Base 語句指定的下界的決定, 除非 Array 是由類型庫(例如 VBA.Array )名稱限定。如果是由類型庫名稱限定,則 Array 不受 Option Base 的影響。

注意 沒有作爲數組聲明的 Variant 也可以表示數組。除了長度固定的字符串以及用戶定義類型之外,Variant 變量可以表示任何類型的數組。儘管一個包含數組的 Variant 和一個元素爲 Variant 類型的數組在概念上有所不同,但對數組元素的訪問方式是相同的。


Asc 函數

返回一個 Integer,代表字符串中首字母的字符代碼。

語法

Asc(string)

必要的 string 參數可以是任何有效的字符串表達式。如果 string 中沒有包含任何字符,則會產生運行時錯誤。

說明

在非 DBCS 系統下,返回值範圍爲 0 – 255 。在 DBCS 系統下,則爲 -32768 – 32767。

注意    AscB 函數作用於包含在字符串中的字節數據,AscB 返回第一個字節的字符代碼,而非字符的字符代碼。AscW 函數返回 Unicode 字符代碼,若平臺不支持 Unicode,則與 Asc 函數功能相同。


Atn 函數

返回一個 Double,指定一個數的反正切值。

語法

Atn(number)

必要的 number 參數是一個 Double 或任何有效的數值表達式。

說明

Atn 函數的參數值 (number) 爲直角三角形兩邊的比值並返回以弧度爲單位的角。這個比值是角的對邊長度除以角的鄰邊長度之商。

值的範圍在 -pi/2 和 pi/2 弧度之間。

爲了將角度轉換爲弧度,請將角度乘以 pi/180。爲了將弧度轉換爲角度,請將弧度乘以 180/pi。

注意   AtnTan 的反三角函數,Tan 的參數值爲角度,返回直角三角形的兩條邊的比值。不要將 Atn 和餘切函數混淆,餘切函數值是正切函數值的倒數,cotangent = (1/tangent)。


CallByName 函數

執行一個對象的方法,或者設置或返回一個對象的屬性。

語法

CallByName(object, procedurename, calltype,[arguments()])

CallByName 函數的語法有以下部分:

部分 描述
object 必需的;變體型(對象)。函數將要執行的對象的名稱。
procedurename 必需的;變體型(字符串)。一個包含該對象的屬性名稱或者方法名稱的字符串表達式。
calltype 必需的;常數。一個 vbCallType 類型的常數,代表正在被調用的過程的類型。
arguments() 可選的:變體型(數組)

說明

CallByName 函數用於獲取或者設置一個屬性,或者在運行時使用一個字符串名稱來調用一個方法。

在下面的例子中,第一行使用 CallByName 來設置一個文本框的 MousePointer 屬性,第二行得到 MousePointer 屬性的值,第三行調用 Move 方法來移動文本框:

CallByName Text1, "MousePointer", vbLet, vbCrosshair
Result = CallByName (Text1, "MousePointer", vbGet)
CallByName Text1, "Move", vbMethod, 100, 100

Choose 函數

從參數列表中選擇並返回一個值。

語法

Choose(index, choice-1[, choice-2, ... [, choice-n]])

Choose 函數的語法具有以下幾個部分:

部分 描述
index 必要參數,數值表達式或字段,它的運算結果是一個數值,且界於 1 和可選擇的項目數之間。
choice 必要參數,Variant 表達式,包含可選擇項目的其中之一。

說明

Choose 會根據 index 的值來返回選擇項列表中的某個值。如果 index 是 1,則 Choose 會返回列表中的第 1 個選擇項。如果 index 是 2,則會返回列表中的第 2 個選擇項,以此類推。

可以使用 Choose 來查閱一個列表中的項目。例如,如果 index 所指定的值爲 3,而 choice-1 = "one"、choice-2 = "two"、且 choice-3 = "three",那麼 Choose 將返回 "three"。當 index 代表一選項組中的值時,則這項功能將會特別有用。

即使它只返回一個選項值,Choose 仍然會計算列表中的每個選擇項。所以應該注意到這項副作用。例如,當在每個選擇項表達式中使用了 MsgBox 函數作爲其中的一部分時,每計算一個選擇項,就會顯示一次消息框。

index小於 1 或大於列出的選擇項數目時,Choose 函數返回 Null。

如果 index 不是整數,則會先四捨五入爲與其最接近的整數。


Chr 函數

返回 String,其中包含有與指定的字符代碼相關的字符 。

語法

Chr(charcode)

必要的 charcode 參數是一個用來識別某字符的 Long。

說明

0 到 31 之間的數字與標準的非打印 ASCII 代碼相同。例如,Chr(10) 可以返回換行字符。charcode 的正常範圍爲 0 – 255。然而,在 DBCS 系統,charcode 的實際範圍爲 -32768 到 65535。

注意   ChrB 函數作用於包含在 String 中的字節數據。ChrB 總是返回一個單字節,而不是返回一個字符,一個字符可能是一個或兩個字節。ChrW 函數返回包含 Unicode 的 String,若在不支持 Unicode 的平臺上,則其功能與 Chr 函數相同。


Command 函數

返回命令行的參數部分,該命令行用於裝入 Microsoft Visual Basic 或 Visual Basic 開發的可執行程序。

語法

Command

說明

當從命令行裝入 Visual Basic 時,/cmd 之後的命令行的任何部分作爲命令行的參數傳遞給程序。下面的示例中,cmdlineargs 代表 Command 函數返回的參數信息。

VB /cmd cmdlineargs

對於使用 Visual Basic 開發並編譯爲 .exe 文件的應用程序,Command 返回出現在命令行中應用程序名之後的任何參數。例如:

MyApp cmdlineargs

想知道如何在正在使用的應用程序的用戶界面中改變命令行參數,請搜尋關於“命令行參數”的幫助。


Cos 函數

返回一個 Double,指定一個角的餘弦值。

語法

Cos(number)

必要的 number 參數是一個 Double 或任何有效的數值表達式,表示一個以弧度爲單位的角。

說明

Cos 函數的參數爲一個角,並返回直角三角形兩邊的比值。該比值爲角的鄰邊長度除以斜邊長度之商。

結果的取值範圍在 -1 到 1 之間。

爲了將角度轉換成弧度,請將角度乘以 pi/180。爲了將弧度轉換成角度,請將弧度乘以 180/pi。


CreateObject 函數

創建並返回一個對 ActiveX 對象的引用。

語法

CreateObject(class,[servername])

 CreateObject 函數的語法有如下部分:

部分 描述
class 必需的; Variant (String). 要創建的應用程序名稱和類。
servername 可選的; Variant (String). 要在其上創建對象的網絡服務器名稱。

class 參數使用 appname.objecttype 這種語法,包括以下部分:

部分 描述
appname 必需的;Variant字符串)。提供該對象的應用程序名。
objecttype 必需的;Variant字符串)。待創建對象的類型或類。

說明

每個支持自動化的應用程序都至少提供一種對象類型。例如,一個字處理應用程序可能會提供 Application 對象,Document 對象,以及 Toolbar 對象。

要創建 ActiveX 對象,只需將 CreateObject 返回的對象賦給一個對象變量:

'聲明一個對象變量來存放該對象
'的引用。Dim as Object 採用後期綁定方式。
Dim ExcelSheet As Object
Set ExcelSheet = CreateObject("Excel.Sheet")

上述代碼將啓動該應用程序創建該對象,在本例中就是創建一個 Microsoft Excel 電子數據表。對象創建後,就可以在代碼中使用自定義的對象變量來引用該對象。在下面的示例中,可以使用對象變量 ExcelSheet 來訪問新建對象的屬性和方法,以及訪問 Microsoft Excel 的其它對象,包括應用程序對象和單元格集合。

'設置 Application 對象使 Excel 可見
ExcelSheet.Application.Visible = True
'在表格的第一個單元中寫些文本
ExcelSheet.Cells(1, 1).Value = "This is column A, row 1"
'將該表格保存到 C:/test.doc 目錄
ExcelSheet.SaveAs "C:/ TEST.DOC"
'使用應用程序對象的 Quit 方法關閉 ExcelExcelSheet.Application.Quit
'釋放該對象變量
Set ExcelSheet = Nothing

使用 As Object 子句聲明對象變量,可以創建一個能包含任何類型對象引用的變量。不過,該變量訪問對象是後期綁定的,也就是說,綁定在程序運行時才進行。要創建一個使用前期綁定方式的對象變量,也就是說,在程序編譯時就完成綁定,則對象變量在聲明時應指定類 ID。例如,可以聲明並創建下列 Microsoft Excel 引用:

Dim xlApp As Excel.Application

Dim xlBook As Excel.Workbook

Dim xlSheet As Excel.WorkSheet

Set xlApp = CreateObject("Excel.Application")

Set xlBook = xlApp.Workbooks.Add

Set xlSheet = xlBook.Worksheets(1)

前期綁定的變量引用可以提供更好的性能,但該變量只能存放聲明中所指定的類的引用。

可以將 CreateObject 函數返回的對象傳給一個參數爲對象的函數。例如,下面的代碼創建並傳遞了一個 Excel.Application 對象的引用:

Call MySub (CreateObject("Excel.Application"))

可以在一個遠端連網的計算機上創建一個對象,方法是把計算機的名稱傳遞給 CreateObjectservername 參數。這個名稱與共享名稱的機器名部份相同:對於一個共享名稱爲 "////MyServer//Public," 的 servername 參數是 "MyServer" 。

下面的代碼返回在一個名爲 MyServer 的遠端計算機上運行的 Excel 實例的版本號:

Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application", "MyServer")
Debug.Print xlApp.Version

如果遠端服務器不存在或者不可用,則會發生一個運行時錯誤。

注意 當該對象當前沒有實例時,應使用 CreateObject。如果該對象已有實例在運行,就會啓動一個新的實例,並創建一個指定類型的對象。要使用當前實例,或要啓動該應用程序並加載一個文件,可以使用 GetObject 函數。

如果對象已登記爲單個實例對象,則不管執行多少次 CreateObject,都只能創建該對象的一個實例。


CurDir 函數

返回一個 Variant (String),用來代表當前的路徑。

語法

CurDir[(drive)]

可選的 drive 參數是一個字符串表達式,它指定一個存在的驅動器。如果沒有指定驅動器,或 drive 是零長度字符串 (""),則 CurDir 會返回當前驅動器的路徑。


CVErr 函數

返回 Error 子類型的 Variant,其中包含指定的錯誤號。

語法

CVErr(errornumber)

必要的 errornumber 參數可以是任何有效的錯誤號代碼。

說明

可以在過程中,使用 CVErr 函數來創建用戶自定義錯誤。例如,如果創建一個函數,它可以接受若干個參數,且正常返回一個字符串,則可以讓函數來判斷輸入的參數,確認它們是在可接受的範圍內。如果不是的話,此函數將不會返回所要的字符串。在這種情況下,CVErr 可以返回一個錯誤號,並告知應該採取的行動。

注意,Error 的隱式轉換是不允許的,例如,不能直接把 CVErr 的返回值賦值給一個非 Variant 的變量。然而,可以對 CVErr 的返回值進行顯式轉換(使用 CIntCDbl 等等),並賦值給適當的數據類型變量。


Date 函數

返回包含系統日期的 Variant (Date)。

語法

Date

說明

爲了設置系統日期,請使用 Date 語句。


DateAdd 函數

返回包含一個日期的 Variant (Date),這一日期還加上了一段時間間隔。

語法

DateAdd(interval, number, date)

DateAdd 函數語法中有下列命名參數:

部分 描述
interval 必要。字符串表達式,是所要加上去的時間間隔。
number 必要。數值表達式,是要加上的時間間隔的數目。其數值可以爲正數(得到未來的日期),也可以爲負數(得到過去的日期)。
date 必要。Variant (Date) 或表示日期的文字,這一日期還加上了時間間隔。

設置

interval 參數具有以下設定值:

設置 描述
yyyy
q
m
y 一年的日數
d
w 一週的日數
ww
h
n 分鐘
s

說明

可以使用 DateAdd 函數對日期加上或減去指定的時間間隔。例如,可以用 DateAdd 來計算距今天爲三十天的日期;或者計算距現在爲 45 分鐘的時間。

爲了對 date 加上“日”,可以使用“一年的日數” (“y”),“日” (”d”) 或“一週的日數” (”w”)。

DateAdd 函數將不返回有效日期。在以下實例中將 1 月31 日加上一個月:

DateAdd(m, 1, 31-Jan-95)

上例中,DateAdd 返回 1995 年 2 月 28 日,而不是 1995 年 2 月 31 日。如果 date 是 1996 年 1 月 31 日,則由於 1996 年是閏年,返回值是 1996 年 2 月 29 日。

如果計算的日期超前 100 年(減去的年度超過 date 中的年份),就會導致錯誤發生。

如果 number 不是一個 Long 值,則在計算時取最接近的整數值來計算。

注意   DateAdd 返回值的格式由 Control Panel設置決定,而不是由傳遞到date 參數的格式決定。


DateDiff 函數

返回 Variant (Long) 的值,表示兩個指定日期間的時間間隔數目。

語法

DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])

DateDiff 函數語法中有下列命名參數:

部分 描述
interval 必要。字符串表達式,表示用來計算date1date2 的時間差的時間間隔
Date1□date2 必要;Variant (Date)。計算中要用到的兩個日期。
Firstdayofweek 可選。指定一個星期的第一天的常數。如果未予指定,則以星期日爲第一天。
firstweekofyear 可選。指定一年的第一週的常數。如果未予指定,則以包含 1 月 1 日的星期爲第一週。

設置

interval 參數的設定值如下:

設置 描述
yyyy
q
m
y 一年的日數
d
w 一週的日數
ww
h
n 分鐘
s

firstdayofweek 參數的設定值如下:

常數 描述
vbUseSystem 0 使用 NLS API 設置。
vbSunday 1 星期日(缺省值)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六

常數 描述
vbUseSystem 0 用 NLS API 設置。
vbFirstJan1 1 從包含 1 月 1 日的星期開始(缺省值)。
vbFirstFourDays 2 從第一個其大半個星期在新的一年的一週開始。
vbFirstFullWeek 3 從第一個無跨年度的星期開始。

說明

DateDiff 函數可用來決定兩個日期之間所指定的時間間隔數目。例如,可以使用 DateDiff 來計算兩個日期之間相隔幾日,或計算從今天起到年底還有多少個星期。

爲了計算 date1date2 相差的日數,可以使用“一年的日數”(y) 或“日”(d)。當 interval 是“一週的日數”(w) 時,DateDiff 返回兩日期間的週數。如果 date1 是星期一,DateDiff 計算到 date2 爲止的星期一的個數。這個數包含 date2 但不包含 date1。不過,如果 interval 是“周”(ww),則 DateDiff 函數返回兩日期間的“日曆周”數。由計算 date1date2 之間星期日的個數而得。如果 date2 剛好是星期日,則 date2 也會被加進 DateDiff 的計數結果中;但不論 date1 是否爲星期日,都不將它算進去。

如果 date1 date2 來得晚,則 DateDiff 函數的返回值爲負數。

firstdayofweek 參數會影響使用時間間隔符號 “W” 或 “WW” 計算的結果。

如果 date1 date2 是日期文字,則指定的年份成爲該日期的固定部分。但是,如果 date1 date2 用雙引號 (" ") 括起來,且年份略而不提,則在每次計算表達式 date1 date2 時,當前年份都會插入到代碼之中。這樣就可以書寫適用於不同年份的程序代碼。

在計算 12 月 31 日和來年的 1 月 1 日的年份差時,DateDiff 返回 1 表示相差一個年份,雖然實際上只相差一天而已。


DatePart 函數

返回一個包含已知日期的指定時間部分的 Variant (Integer)。

語法

DatePart(interval, date[,firstdayofweek[, firstweekofyear]])

DatePart 函數語法中有下列命名參數:

部分 描述
interval 必要。字符串表達式,是要返回的時間間隔。
date 必要。要計算的 Variant (Date) 值。
Firstdayofweek 可選。指定一個星期的第一天的常數。如果未予指定,則以星期日爲第一天。
firstweekofyear 可選。指定一年第一週的常數。如果未予指定,則以包含 1 月 1 日的星期爲第一週。

設置

interval 參數的設定值如下:

設置 描述
yyyy
q
m
y 一年的日數
d
w 一週的日數
ww
h
n 分鐘
s

firstdayofweek 參數的設定值如下:

常數 描述
vbUseSystem 0 使用 NLS API 設置。
vbSunday 1 星期日(缺省值)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六

firstweekofyear 參數的設定值如下:

常數 描述
vbUseSystem 0 使用 NLS API 設置。
vbFirstJan1 1 從包含 1 月 1 日的星期開始(缺省值)。
vbFirstFourDays 2 從第一個其大半個星期在新的一年的一週開始。
vbFirstFullWeek 3 從第一個無跨年度的星期開始。

說明

DatePart 函數可以用來計算日期並返回指定的時間間隔。例如,可以使用DatePart 計算某個日期是星期幾或目前爲幾點鐘。

firstdayofweek 參數會影響使用時間間隔符號 “W” 或 “WW” 計算的結果。

如果 date 是日期文字,則指定的年份成爲該日期的固定部分。但是,如果 date 用雙引號 (" ") 括起來,且年份略而不提,則在每次計算 date 表達式時,當前年份都會插入到代碼之中。這樣就可以書寫適用於不同年份的程序代碼。


DateSerial 函數

返回包含指定的年、月、日的 Variant (Date)。

語法

DateSerial(year, month, day)

DateSerial 函數語法有下列的命名參數:

部分 描述
year 必要;Integer。從 100 到 9999 間的整數,或一數值表達式。
month 必要;Integer。任何數值表達式。
day 必要;Integer。任何數值表達式。

說明

爲了指定某個日期,如 1991 年 12 月 31 日,DateSerial 函數中的每個參數的取值範圍應該是可接受的;即,日的取值範圍應在 1-31 之間,而月的取值範圍應在 1-12 之間。但是,當一個數值表達式表示某日之前或其後的年、月、日數時,也可以爲每個使用這個數值表達式的參數指定相對日期。

以下示例中使用了數值表達式代替絕對日期。這裏,DateSerial 函數返回 1990 年 8 月 1 日的 十 年 (1990 - 10) 零兩個月 (8 - 2) 又一天 (1 - 1) 之前的日期;換句話說,就是 1980 年 5 月 31 日。

DateSerial(1990 - 10, 8 - 2, 1 - 1)

year 參數的數值若介於 0 與 29 之間,則將其解釋爲 2000–2029年,若介於 30 和 99 之間則解釋爲1930–1999年。而對所有其它 year 參數,則請用四位數值表示(如 1800)。

當任何一個參數的取值超出可接受的範圍時,它會適時進位到下一個較大的時間單位。例如,如果指定了 35 天,則這個天數被解釋成一個月加上多出來的日數,多出來的日數將由其年份與月份來決定。如果一個參數值超出 -32,768 到 32,767 的範圍,就會導致錯誤發生。


DateValue 函數

返回一個 Variant (Date)。

語法

DateValue(date)

必要的 date 參數 date 通常是字符串表達式,表示從 100 年 1 月 1 日到 9999  年 12 月 31 日之間的一個日期。但是,date 也可以是任何表達式,其所代表的日期、時間在上述範圍內。

說明

如果 date 是一個字符串,且其內容只有數字以及分隔數字的日期分隔符,則 DateValue 就會根據系統中指定的短日期格式來識別月、日、年的順序。DateValue 也識別明確的英文月份名稱,全名或縮寫均可。例如,除了 12/30/1991 和 12/30/91 之外,DateValue 也識別 December 30, 1991 和 Dec 30, 1991。

如果 date 中略去了年這一部分,DateValue 就會使用由計算機系統日期設置的當前年份。

如果 date 參數包含時間信息,則 DateValue 不會返回它。但是,如果 date 包含無效時間信息(如 89:98),則會導致錯誤發生。


Day 函數

返回一個 Variant (Integer),其值爲 1 到 31 之間的整數,表示一個月中的某一日。

語法

Day(date)

必要的 date 參數,可以是任何能夠表示日期的 Variant、數值表達式、字符串表達式或它們的組合。如果 date 包含 Null,則返回 Null


DDB 函數

返回一個 Double,指定一筆資產在一特定期間內的折舊。可使用雙下落收復平衡方法或其它指定的方法進行計算。

語法

DDB(cost, salvage, life, period[, factor])

DDB 函數具有下列命名參數:

部分 描述
cost 必要。Double 指定資產的初始成本。
salvage 必要。Double.指定使用年限結束時的資產價值。
life 必要。Double 指定資產可用的可用年限。
period 必要。Double 指定計算資產折舊所用的那一期間。
factor 可選。Variant 指定收復平衡下落時的速度。如果省略的話,2(雙下落方法)爲缺省值。

說明

雙下落收復平衡方法用加速利率法計算折舊。在第一段時期,折舊爲最高,而在接下來的期間內降低。

lifeperiod 參數必須用相同的單位表示。例如,如果 life 用月份表示,則 period 也必須用月份表示。所有參數都必須是正值。

DDB 函數使用下列公式計算在一定時期後的折舊:

折舊 / period = ((cost alvage) * factor) / life


Dir 函數

返回一個 String,用以表示一個文件名、目錄名或文件夾名稱,它必須與指定的模式或文件屬性、或磁盤卷標相匹配。

語法

Dir[(pathname[, attributes])]

Dir 函數的語法具有以下幾個部分:

部分 描述
pathname 可選參數。用來指定文件名的字符串表達式,可能包含目錄或文件夾、以及驅動器。如果沒有找到 pathname,則會返回零長度字符串 ("")。
attributes 可選參數。常數或數值表達式,其總和用來指定文件屬性。如果省略,則會返回匹配 pathname 但不包含屬性的文件。

設置值

attributes 參數的設置可爲:

常數 描述
vbNormal 0 (缺省) 指定沒有屬性的文件。
vbReadOnly 1 指定無屬性的只讀文件
vbHidden 2 指定無屬性的隱藏文件
VbSystem 4 指定無屬性的系統文件
vbVolume 8 指定卷標文件;如果指定了其它屬性,則忽略vbVolume
vbDirectory 16 指定無屬性文件及其路徑和文件夾。

注意 這些常數是由 VBA 所指定的,在程序代碼中的任何位置,可以使用這些常數來替換真正的數值。

說明

Dir 支持多字符 (*) 和單字符 (?) 的通配符來指定多重文件。

 由於 Macintosh 不支持通配符,使用文件類型指定文件組。可以使用 MacID 函數指定文件類型而不用文件名。比如,下列語句返回當前文件夾中第一個TEXT文件的名稱:

Dir("SomePath", MacID("TEXT"))

 爲選中文件夾中所有文件,指定一空串:

Dir("")

在 Microsoft Windows 中,如果在Dir函數中使用MacID函數,將產生錯誤。

任何大於256的attribute值都被認爲是MacID 函數的值。

在第一次調用 Dir 函數時,必須指定 pathname,否則會產生錯誤。如果也指定了文件屬性,那麼就必須包括 pathname

Dir 會返回匹配 pathname 的第一個文件名。若想得到其它匹配 pathname 的文件名,再一次調用 Dir,且不要使用參數。如果已沒有合乎條件的文件,則 Dir 會返回一個零長度字符串 ("")。一旦返回值爲零長度字符串,並要再次調用 Dir 時,就必須指定 pathname,否則會產生錯誤。不必訪問到所有匹配當前 pathname 的文件名,就可以改變到一個新的 pathname 上。但是,不能以遞歸方式來調用 Dir 函數。以 vbDirectory 屬性來調用 Dir 不能連續地返回子目錄。

提示 由於文件名並不會以特別的次序來返回,所以可以將文件名存儲在一個數組中,然後再對這個數組排序。


DoEvents 函數

轉讓控制權,以便讓操作系統處理其它的事件。

語法

DoEvents( )

說明

DoEvents 函數會返回一個 Integer,以代表 Visual Basic 獨立版本中打開的窗體數目,例如,Visual Basic 專業版,在其它的應用程序中,DoEvents 返回 0。

DoEvents 會將控制權傳給操作系統。當操作系統處理完隊列中的事件,並且在 SendKeys 隊列中的所有鍵也都已送出之後,返回控制權。

DoEvents 對於簡化諸如允許用戶取消一個已啓動的過程 — 例如搜尋一個文件 — 特別有用。對於長時間過程,放棄控制權最好使用定時器或通過委派任務給 ActiveX EXE 部件來完成。以後,任務還是完全獨立於應用程序,多任務及時間片由操作系統來處理。

注意 確保以 DoEvents 放棄控制權的過程,在第一次 DoEvents 返回之前,不能再次被其他部分的代碼調用;否則會產生不可預料的結果。此外,如果其它的應用程序可能會和本過程以不可預知的方式進行交互操作,那麼也不要使用 DoEvents,因爲此時不能放棄控制權。


Environ 函數

返回 String,它關連於一個操作系統環境變量。 在 Macintosh 中不可用。

語法

Environ({envstring | number})

Environ 函數的語法含有以下這些命名參數:

部分 描述
envstring 可選參數。包含一個環境變量名的字符串表達式。
number 可選參數。數值表達式,用來表示環境字符串在環境字符串表格中的數值順序。number 參數可以是任意的數值表達式,不過在計算前,它會先轉換爲一個整數。

說明

如果在環境字符串表格中找不到 envstring,則會返回一個零長度字符串 ("")。如果找到,則 Environ 會返回一段文本,文本是賦值給指定的 envstring 的,也就是說,在環境字符串表格中對應那個環境變量的等號 (=) 後面的那段文本。

如果指定了 number,則在環境字符串表格中相應位置上的字符串會返回。在這種情況下,Environ 會返回整個文本,包括 envstring。如果在指定位置上沒有環境字符串,那麼 Environ 會返回一個零長度字符串。


EOF 函數

返回一個 Integer,它包含 Boolean 值 True,表明已經到達爲 Random 或順序 Input 打開的文件的結尾。

語法

EOF(filenumber)

必要的 filenumber 參數是一個 Integer,包含任何有效的文件號。

說明

使用 EOF 是爲了避免因試圖在文件結尾處進行輸入而產生的錯誤。

直到到達文件的結尾,EOF 函數都返回 False。對於爲訪問 RandomBinary 而打開的文件,直到最後一次執行的 Get 語句無法讀出完整的記錄時,EOF 都返回 False

對於爲訪問 Binary 而打開的文件,在 EOF 函數返回 True 之前,試圖使用 Input 函數讀出整個文件的任何嘗試都會導致錯誤發生。在用 Input 函數讀出二進制文件時,要用 LOF Loc 函數來替換 EOF 函數,或者將 Get 函數與 EOF 函數配合使用。對於爲 Output 打開的文件,EOF 總是返回 True


Error 函數

返回對應於已知錯誤號的錯誤信息。

語法

Error[(errornumber)]

這個可選的 errornumber 參數可以爲任何有效的錯誤號。如果 errornumber 是有效的錯誤號,但尚未被定義,則 Error 將返回字符串“應用程序定義的錯誤或對象定義的錯誤”。如果 errornumber 不是有效的錯誤號,則會導致錯誤發生。如果省略 errornumber,就會返回與最近一次運行時錯誤對應的消息。如果沒有發生運行時錯誤,或者 errornumber 是 0,則 Error 返回一個長度爲零的字符串 ("")。

說明

請檢查 Err 對象的屬性設置,以便認定最近一次運行時錯誤。Error 函數的返回值對應於 Err 對象的 Description 屬性。


Exp 函數

返回 Double,指定 e(自然對數的底)的某次方。

語法

Exp(number)

必要的 number 參數 number 是 Double 或任何有效的數值表達式。

說明

如果 number 的值超過 709.782712893,則會導致錯誤發生。常數 e 的值大約是 2.718282。

注意   Exp 函數的作用和 Log 的作用互補,所以有時也稱做反對數。


FileAttr 函數

返回一個 Long,表示使用 Open 語句所打開文件的文件方式。

語法

FileAttr(filenumber, returntype)

FileAttr 函數的語法具有以下幾個命名參數:

部分 描述
filenumber 必要。Integer 類型,任何有效的文件號。
returntype 必要。Integer 類型。它是數字,指出返回信息的類型。指定 1 則可返回一個代表文件方式的數值。而僅僅在 16 位系統中, 指定 2 纔可以恢復操作系統的文件句柄。在 32 位系統中不支持 Returntype 2,它會導致錯誤發生。

返回值

returntype 參數值爲 1 時,下列返回值指出文件訪問方式:

方式
Input 1
Output 2
Random 4
Append 8
Binary 32


FileDateTime 函數

返回一個 Variant (Date),此爲一個文件被創建或最後修改後的日期和時間。

語法

FileDateTime(pathname)

必要的 pathname 參數是用來指定一個文件名的字符串表達式。pathname 可以包含目錄或文件夾、以及驅動器。


FileLen 函數

返回一個 Long,代表一個文件的長度,單位是字節。

語法

FileLen(pathname)

必要的 pathname 參數是用來指定一個文件名的字符串表達式。pathname 可以包含目錄或文件夾、以及驅動器。

說明

當調用 FileLen 函數時,如果所指定的文件已經打開,則返回的值是這個文件在打開前的大小。

注意 若要取得一個打開文件的長度大小,使用 LOF 函數。


Filter函數

描述

返回一個下標從零開始的數組,該數組包含基於指定篩選條件的一個字符串數組的子集。

語法

Filter(InputStrings, Value[, Include[, Compare]])

Filter函數語法有如下幾部分:

部分 描述
InputStrings 必需的。要執行搜索的一維字符串數組。
Value 必需的。要搜索的字符串。
Include 可選的。Boolean值,表示返回子串包含還是不包含Value字符串。如果IncludeTrueFilter返回的是包含Value子字符串的數組子集。如果IncludeFalseFilter返回的是不包含Value子字符串的數組子集。
Compare 可選的。數字值,表示所使用的字符串比較類型。有關其設置,請參閱下面的“設置值”部分。

設置值

Compare參數的設置值如下:

常數 描述
vbUseCompareOption –1 使用Option Compare語句的設置值來執行比較。
vbBinaryCompare  0 執行二進制比較。
vbTextCompare  1 執行文字比較。
vbDatabaseCompare  2 只用於Microsoft Access。基於您的數據庫信息來執行比較。

說明

如果在InputStrings中沒有發現與Value相匹配的值,Filter返回一個空數組。如果InputStringsNull或不是一個一維數組,則產生錯誤。

Filter函數所返回的數組,其元素數目剛好是所找到的匹配項目數。


Format 函數

返回 Variant (String),其中含有一個表達式,它是根據格式表達式中的指令來格式化的。

語法

Format(expression[, format[, firstdayofweek[, firstweekofyear]]])

Format 函數的語法具有下面幾個部分:

部分 說明
expression 必要參數。任何有效的表達式。
format 可選參數。有效的命名錶達式或用戶自定義格式表達式。
firstdayofweek 可選參數。常數,表示一星期的第一天。
firstweekofyear 可選參數。常數,表示一年的第一週。

設置值

firstdayofweek 參數有下面設置:

常數 說明
vbUseSystem 0 使用 NLS API 設置。
VbSunday 1 星期日(缺省)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六

firstweekofyear 參數有下面設置:

常數 說明
vbUseSystem 0 使用 NLS API 設置。
vbFirstJan1 1 從包含一月一日的那一週開始(缺省)。
vbFirstFourDays 2 從本年第一週開始,而此周至少有四天在本年中。
VbFirstFullWeek 3 從本年第一週開始,而此周完全在本年中。

說明

格式化 作法
數字 使用預先定義的命名數值格式或創建用戶自定義數值格式。
日期和時間 使用預先定義的命名日期/時間格式或創建用戶自定義日期/時間格式。
日期和時間序數 使用日期和時間格式或數值格式。
字符串 創建自定義的字符串格式。

如果在格式化數字時沒有指定 formatFormat 會提供與 Str 函數類似的功能,儘管它是國際化的。然而,以 Format 作用在正數上不會保留正負號空間,而以 Str 的話則會。


FormatCurrency函數

描述

返回一個貨幣值格式的表達式,它使用系統控制面板中定義的貨幣符號。

語法

FormatCurrency(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit [,UseParensForNegativeNumbers [,GroupDigits]]]])

FormatCurrency函數語法有如下幾部分:

部分 描述
Expression 必需的。要格式化的表達式。
NumDigitsAfterDecimal 可選的。數字值,表示小數點右邊的顯示位數。缺省值爲–1,表示使用計算機的區域設置值。
IncludeLeadingDigit 可選的。三態常數,表示小數點前是否顯示一個零。關於其值,請參閱“設置值”部分。
UseParensForNegativeNumbers 可選的。三態常數,表示是否把負數值放在園括號內。關於其值,請參閱“設置值”部分。
GroupDigits 可選的。三態常數,表示是否用組分隔符對數字進行分組,組分隔符由計算機的區域設置值指定。關於其值,請參閱“設置值”部分。

設置值

IncludeLeadingDigitUseParensForNegativeNumbers GroupDigits參數的設置值如下:

常數 描述
TristateTrue –1 True
TristateFalse 0 False
TristateUseDefault –2 使用計算機區域設置中的設置值。

說明

當忽略一個或多個選項參數時,被忽略的參數值由計算機的區域設置值提供。

貨幣符號相對貨幣值的位置由計算機的區域設置值確定。

注意   除起始的零外,所有設置值信息都來自“區域設置”的“貨幣”選項卡,起始的零來自“數字”選項卡。


FormatDateTime函數

描述

返回一個日期或時間格式的表達式。

語法

FormatDateTime(Date[,NamedFormat])

FormatDateTime函數語法有如下幾部分:

部分 描述
Date 必需的。要被格式化的日期表達式。
NamedFormat 可選的。數字值,表示日期/時間所使用的格式。如果忽略該值,則使用vbGeneralDate

設置值

NamedFormat參數的設置值如下:

常數 描述
vbGeneralDate 0 顯示日期和/或時間。如果有日期部分,則用短日期格式顯示。如果有時間部分,則用長時間格式顯示。如果都有,兩部分都顯示。
vbLongDate 1 用計算機區域設置值中指定的長日期格式顯示日期。
vbShortDate 2 用計算機區域設置值中指定的短日期格式顯示日期。
vbLongTime 3 用計算機區域設置值中指定的時間格式顯示時間。
vbShortTime 4 用24小時格式(hh:mm)顯示時間。


FormatNumber函數

描述

返回一個數字格式的表達式。

語法

FormatNumber(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit [,UseParensForNegativeNumbers [,GroupDigits]]]])

FormatNumber函數語法有如下幾部分:

部分 描述
Expression 必需的。要被格式化的表達式。
NumDigitsAfterDecimal 可選的。數字值,表示小數點右邊的顯示位數。缺省值爲–1,表示使用計算機的區域設置值。
IncludeLeadingDigit 可選的。三態常數,表示小數點前是否顯示零。關於其值,請參閱“設置值”部分。
UseParensForNegativeNumbers 可選的。三態常數,表示是否把負數值放在圓括號內。關於其值,請參閱“設置值”部分。
GroupDigits 可選的。的三態常數,表示是否用組分隔符對數字分組,組分隔符在計算機的區域設置值中指定。關於其值,請參閱“設置值”部分。

設置值

IncludeLeadingDigit、UseParensForNegativeNumbersGroupDigits參數的設置值如下:

常數 描述
TristateTrue –1 True
TristateFalse 0 False
TristateUseDefault –2 用計算機區域設置值中的設置值。

說明

當忽略一個或多個選項參數時,被忽略的參數值由計算機的區域設置值提供。

注意   所有設置值信息都來自“區域設置”的“數字”選項卡。


FormatPercent函數

描述

返回一個百分比格式(乘以100)的表達式,後面有%符號。

語法

FormatPercent(Expression[,NumDigitsAfterDecimal [,IncludeLeadingDigit [,UseParensForNegativeNumbers [,GroupDigits]]]])

FormatPercent函數語法有如下幾部分:

部分 描述
Expression 必需的。要格式化的表達式。
NumDigitsAfterDecimal 可選的。表示小數點右邊的顯示位數。缺省值爲–1,表示使用計算機的區域設置值。
IncludeLeadingDigit 可選的。三態常數,表示小數點前是否顯示零。關於其值,請參閱“設置值”部分。
UseParensForNegativeNumbers 可選的。三態常數,表示是否把負數放在圓括號內。關於其值,請參閱“設置值”部分。
GroupDigits 可選的。三態常數,表示是否用組分隔符對數字進行分組,組分隔符在計算機的區域設置值中指定。關於其值,請參閱“設置值”部分。

設置值

IncludeLeadingDigit、UseParensForNegativeNumbersGroupDigits參數的設置值如下:

常數 描述
TristateTrue –1 True
TristateFalse 0 False
TristateUseDefault –2 使用計算機區域設置值中的設置值。

說明

當忽略一個或多個選項參數時,被忽略的參數值由計算機的區域設置值提供。

注意   所有的設置值信息都來自“區域設置”的“數字”選項卡。


FreeFile 函數

返回一個 Integer代表下一個可供 Open 語句使用的文件號。

語法

FreeFile[(rangenumber)]

可選的參數 rangenumber 是一個 Variant它指定一個範圍,以便返回該範圍之內的下一個可用文件號。指定 0(缺省值)則返回一個介於 1 – 255 之間的文件號。指定 1 則返回一個介於 256 – 511 之間的文件號。

說明

使用 FreeFile 提供一個尚未使用的文件號。


FV 函數

返回一個 Double,指定未來的定期定額支付且利率固定的年金。

語法

FV(rate, nper, pmt[, pv[, type]])

FV 函數有下列命名參數:

部分 描述
rate 必要。Double,指定每一期的利率。例如,如果有一筆貸款年百分率 (APR) 爲百分之十且按月付款的汽車貸款,則利率爲 0.1/12 或 0.0083。
nper 必要。Integer,指定一筆年金的付款總期限。例如,如果對一筆爲期四年的汽車貸款選擇按月付款方式,則貸款期限共有 4 * 12(或 48)個付款期。
pmt 必要。Double 指定每一期的付款金額。付款金額通常包含本金和利息,而且此付款金額在年金的有效期間是不會改變的。
pv 可選。Variant指定未來一系列付款(或一次付清款項)的現值。例如,當借錢買一輛汽車時,向貸方所借的金額爲未來每月付款給貸方的現值。如果省略的話,缺省值爲 0。
type 可選。Variant,指定貸款到期時間。如果貸款在貸款週期結束時到期,請使用 0。如果貸款在週期開始時到期,請使用 1。如果省略的話,缺省值爲 0。

說明

年金是一段時間內一系列固定現金支付。年金可以是貸款(如房屋抵押貸款),也可以是一筆投資(如按月儲蓄計劃)。

在支付期間,必須用相同的單位來計算 ratenper 參數。例如,如果 rate 用月份來計算,則 nper 也必須用月份來計算。

對所有參數,用負數表示現金支出(如儲蓄存款),而用正數表示現金收入(如紅利支票)。


GetAllSettings 函數

從 Windows 註冊表中返回應用程序項目的所有註冊表項設置及其相應值(開始是由 SaveSetting 產生)。

語法

GetAllSettings(appname, section)

GetAllSettings 函數的語法具有下列命名參數:

部分 描述

appname 必要。字符串表達式,包含應用程序或工程的名稱,並要求這些應用程序或工程有註冊表項設置

section 必要。字符串表達式,包含區域名稱,並要求該區域有註冊表項設置。GetAllSettings 返回 Variant,其內容爲字符串的二維數組,該二維數組包含指定區域中的所有註冊表項設置及其對應值。

說明

如果 appname section 不存在,則 GetAllSettings 返回未初始化的 Variant


GetAttr 函數

返回一個 Integer,此爲一個文件、目錄、或文件夾的屬性。

語法

GetAttr(pathname)

必要的 pathname 參數是用來指定一個文件名的字符串表達式。pathname 可以包含目錄或文件夾、以及驅動器。

返回值

GetAttr 返回的值,是下面這些屬性值的總和:

常數 描述
vbNormal 0 常規
vbReadOnly 1 只讀
vbHidden 2 隱藏
vbSystem 4 系統文件
vbDirectory 16 目錄或文件夾
vbArchive 32 上次備份以後,文件已經改變
vbalias 64 指定的文件名是別名。

注意 這些常數是由 VBA 指定的,在程序代碼中的任何位置,可以使用這些常數來替換真正的值。

說明

若要判斷是否設置了某個屬性,在 GetAttr 函數與想要得知的屬性值之間使用 And 運算符與逐位比較。如果所得的結果不爲零,則表示設置了這個屬性值。例如,在下面的 And 表達式中,如果檔案 (Archive) 屬性沒有設置,則返回值爲零:

Result = GetAttr(FName) And vbArchive

如果文件的檔案屬性已設置,則返回非零的數值。


GetObject 函數

返回文件中的 ActiveX 對象的引用。

語法

GetObject([pathname] [, class])

GetObject 函數的語法包含下面幾個命名參數:

部分 描述
pathname 可選的;Variant (String)。包含待檢索對象的文件的全路徑和名稱。如果省略 pathname,則 class 是必需的。
class 可選的;Variant (String)。代表該對象的類的字符串。

其中,class 參數的語法格式爲 appname.objecttype,且語法的各個部分如下:

部分 描述
appname 必需的;Variant (String)。提供該對象的應用程序名稱。
objecttype 必需的;Variant (String)。待創建對象的類型或類。

說明

使用 GetObject 函數可以訪問文件中的 ActiveX 對象,而且可以將該對象賦給對象變量。可以使用 Set 語句將 GetObject 返回的對象賦給對象變量。例如:

Dim CADObject As Object
Set CADObject = GetObject("C:/CAD/SCHEMA.CAD")

當執行上述代碼時,就會啓動與指定的 pathname 相關聯的應用程序,同時激活指定文件中的對象。

如果 pathname 是一個零長度的字符串 (""),則 GetObject 返回指定類型的新的對象實例。如果省略了 pathname 參數,則 GetObject 返回指定類型的當前活動的對象。如果當前沒有指定類型的對象,就會出錯。

有些應用程序允許只激活文件的一部分,其方法是在文件名後加上一個驚歎號 (!) 以及用於標識想要激活的文件部分的字符串。關於如何創建這種字符串的信息,請參閱有關應用程序創建對象的文檔。

例如,在繪圖應用程序中,一個存放在文件中的圖可能有多層。可以使用下述代碼來激活圖中被稱爲 SCHEMA.CAD 的層:

Set LayerObject = GetObject("C:/CAD/SCHEMA.CAD!Layer3")

如果不指定對象的 class,則自動化會根據所提供的文件名,來確定被啓動的應用程序以及被激活的對象。不過,有些文件可能不止支持一種對象類。例如,圖片可能支持三種不同類型的對象:Application 對象,Drawing 對象,以及 Toolbar 對象,所有這些都是同一個文件中的一部分。爲了說明要具體激活文件中的哪種對象,就應使用這個可選的 class 參數。例如:

Dim MyObject As Object
Set MyObject = GetObject("C:/DRAWINGS/SAMPLE.DRW", "FIGMENT.DRAWING")

在上述例子中,FIGMENT 是一個繪圖應用程序的名稱,而 DRAWING 則是它支持的一種對象類型。

對象被激活之後,就可以在代碼中使用所定義的對象變量來引用它。在前面的例子中,可以使用對象變量 MyObject 來訪問這個新對象的屬性和方法。例如:

MyObject.Line 9, 90
MyObject.InsertText 9, 100, "Hello, world."
MyObject.SaveAs "C:/DRAWINGS/SAMPLE.DRW"

注意 當對象當前已有實例,或要創建已加載的文件的對象時,就使用 GetObject 函數。如果對象當前還沒有實例,或不想啓動已加載文件的對象,則應使用 CreateObject 函數。

如果對象已註冊爲單個實例的對象,則不管執行多少次 CreateObject,都只能創建該對象的一個實例。若使用單個實例對象,當使用零長度字符串 ("") 語法調用時,GetObject 總是返回同一個實例,而若省略 pathname 參數,就會出錯。不能使用 GetObject 來獲取 Visual Basic 創建的類的引用。


GetSetting 函數

從 Windows 註冊表中的應用程序項目返回註冊表項設置值。

語法

GetSetting(appname, section, key[, default])

GetSetting 函數的語法具有下列命名參數:

部分 描述

appname 必要。字符串表達式,包含應用程序或工程的名稱,要求這些應用程序或工程有註冊表項設置。
section 必要。字符串表達式,包含區域名稱,要求該區域有註冊表項設置。
key 必要。字符串表達式,返回註冊表項設置的名稱。
default 可選。表達式,如果註冊表項設置中沒有設置值,則返回缺省值。如果省略,則 default 取值爲長度爲零的字符串 ("")。

說明

如果 GetSetting 的參數中的任何一項都不存在,則 GetSetting 返回 default


Hex 函數

返回代表十六進制數值的 String。

語法

Hex(number)

必要的 number 參數爲任何有效的數值表達式或字符串表達式。

說明

如果 number 還不是一個整數,那麼在執行前會先被四捨五入成最接近的整數。

如果 number 所得爲
Null Null
Empty 零 (0)
任何其他的數字 最多可到八個十六進制字符。

適當範圍內的數字,前綴以 &H,可以直接表示十六進制數字。例如,十六進制表示法的 &H10 代表十進制的 16。


Hour 函數

返回一個 Variant (Integer),其值爲 0 到 23 之間的整數,表示一天之中的某一鐘點。

語法

Hour(time)

必要的 time 參數,可以是任何能夠表示時刻的 Variant、數值表達式、字符串表達式或它們的組合。如果 time 包含 Null,則返回 Null

返回一個 Variant (Integer),其值爲 0 到 23 之間的整數,表示一天之中的某一鐘點。

語法

Hour(time)

必要的 time 參數,可以是任何能夠表示時刻的 Variant、數值表達式、字符串表達式或它們的組合。如果 time 包含 Null,則返回 Null


IIf 函數

根據表達式的值,來返回兩部分中的其中一個。

語法

IIf(expr, truepart, falsepart)

IIf 函數的語法含有下面這些命名參數:

部分 描述
expr 必要參數。用來判斷真僞的表達式。
truepart 必要參數。如果 exprTrue,則返回這部分的值或表達式。
falsepart 必要參數。如果 exprFalse,則返回這部分的值或表達式。

說明

由於 IIf 會計算 truepart falsepart,雖然它只返回其中的一個。因此要注意到這個副作用。例如,如果 falsepart 產生一個被零除錯誤,那麼程序就會發生錯誤,即使 exprTrue


IMEStatus 函數

返回一個 Integer,用來指定當前 Microsoft Windows 的輸入法 (IME) 方式;只對東亞區版本有效。

語法

IMEStatus

返回值

下面是日本國別的返回值:

常數 描述
vbIMEModeNoControl 0 不控制IME(缺省)
vbIMEModeOn 1 打開 IME
vbIMEModeOff 2 關閉 IME
vbIMEModeDisable 3 IME 無效
vbIMEModeHiragana 4 完整寬度 Hiragana 模式
vbIMEModeKatakana 5 完整寬度 Katakana 片假名模式
vbIMEModeKatakanaHalf mode 6 半寬 Katakana 模式
vbIMEModeAlphaFull mode 7 完整寬度 Alphanumeric 模式
vbIMEModeAlpha mode 8 半寬 Alphanumeric 模式

下面是韓國地區的返回值:

常數 描述
vbIMEModeAlphaFull 7 完整寬度 Alphanumeric 模式
vbIMEModeAlpha 8 半寬 Alphanumeric 模式
vbIMEModeHangulFull 9 完整寬度 Hangul 模式
vbIMEModeHangul 10 半寬 Hangul 模式

下面是中文地區的返回值:

常數 描述
vbIMEModeNoControl 0 不控制IME(缺省)
vbIMEModeOn 1 打開 IME
vbIMEModeOff 2 關閉 IME


Input 函數

返回 String,它包含以 Input Binary 方式打開的文件中的字符。

語法

Input(number, [#]filenumber)

Input 函數的語法具有以下幾個部分:

部分 描述
number 必要。任何有效的數值表達式,指定要返回的字符個數。
filenumber 必要。任何有效的文件號。

說明

通常用 Print #PutInput 函數讀出的數據寫入文件。Input 函數只用於以 Input Binary 方式打開的文件。

Input # 語句不同,Input 函數返回它所讀出的所有字符,包括逗號、回車符、空白列、換行符、引號和前導空格等。

對於 Binary 訪問類型打開的文件,如果試圖用 Input 函數讀出整個文件,則會在 EOF 返回 True 時產生錯誤。在用 Input 讀出二進制文件時,要用 LOF Loc 函數代替 EOF 函數,而在使用 EOF 函數時要配合以 Get 函數。

注意 對於文本文件中包含的字節數據要使用 InputB 函數。對於 InputB 來說,number 指定的是要返回的字節個數,而不是要返回的字符個數。


InputBox 函數

在一對話框來中顯示提示,等待用戶輸入正文或按下按鈕,並返回包含文本框內容的 String。

語法

InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])

InputBox 函數的語法具有以下幾個命名參數:

部分 描述
Prompt 必需的。作爲對話框消息出現的字符串表達式。prompt 的最大長度大約是 1024 個字符,由所用字符的寬度決定。如果 prompt 包含多個行,則可在各行之間用回車符 (Chr(13))、換行符 (Chr(10)) 或回車換行符的組合 (Chr(13) & Chr(10)) 來分隔。
Title 可選的。顯示對話框標題欄中的字符串表達式。如果省略 title,則把應用程序名放入標題欄中。
Default 可選的。顯示文本框中的字符串表達式,在沒有其它輸入時作爲缺省值。如果省略 default則文本框爲空。
Xpos 可選的。數值表達式,成對出現,指定對話框的左邊與屏幕左邊的水平距離。如果省略 xpos,則對話框會在水平方向居中。
Ypos 可選的。數值表達式,成對出現,指定對話框的上邊與屏幕上邊的距離。如果省略 ypos,則對話框被放置在屏幕垂直方向距下邊大約三分之一的位置。
Helpfile 可選的。字符串表達式,識別幫助文件,用該文件爲對話框提供上下文相關的幫助。如果已提供 helpfile,則也必須提供 context
Context 可選的。數值表達式,由幫助文件的作者指定給某個幫助主題的幫助上下文編號。如果已提供 context,則也必須要提供 helpfile

說明

如果同時提供了 helpfilecontext,用戶可以按 F1 來查看與 context 相應的幫助主題。某些主應用程序,例如,Microsoft Excel,會在對話框中自動添加一個 Help 按鈕。如果用戶單擊 OK 或按下ENTER ,則 InputBox 函數返回文本框中的內容。如果用戶單擊 Cancel,則此函數返回一個長度爲零的字符串 ("")。

注意 如果還要指定第一個命名參數以外的參數,則必須在表達式中使用 InputBox。如果要省略某些位置參數,則必須加入相應的逗號分界符。


InStr 函數

返回 Variant (Long),指定一字符串在另一字符串中最先出現的位置。

語法

InStr([start, ]string1, string2[, compare])

InStr 函數的語法具有下面的參數:

部分 說明
start 可選參數。爲數值表達式,設置每次搜索的起點。如果省略,將從第一個字符的位置開始。如果 start 包含 Null,將發生錯誤。如果指定了 compare 參數,則一定要有 start 參數。
string1 必要參數。接受搜索的字符串表達式。
string2 必要參數。被搜索的字符串表達式。
Compare 可選參數。指定字符串比較。如果 compare 是 Null,將發生錯誤。如果省略 compareOption Compare 的設置將決定比較的類型。

設置

 compare 參數設置爲:

常數 描述
vbUseCompareOption -1 使用Option Compare 語句設置執行一個比較。
vbBinaryCompare 0 執行一個二進制比較。
vbTextCompare 1 執行一個按照原文的比較。
vbDatabaseCompare 2 僅適用於Microsoft Access,執行一個基於數據庫中信息的比較。

返回值

如果 InStr返回
string1 爲零長度 0
string1 Null Null
string2 爲零長度 Start
string2Null Null
string2 找不到 0
在 string1 中找到string2 找到的位置
start > string2 0

說明

InStrB 函數作用於包含在字符串中的字節數據。所以 InStrB 返回的是字節位置,而不是字符位置。


InStrRev函數

描述

返回一個字符串在另一個字符串中出現的位置,從字符串的末尾算起。

語法

InstrRev(string1, string2[, start[, compare]])

InstrRev函數語法有如下幾部分:

部分 描述
string1 必需的。要執行搜索的字符串表達式。
string2 必需的。要搜索的字符串表達式。
start 可選的。數值表達式,設置每次搜索的開始位置。如果忽略,則使用–1,它表示從上一個字符位置開始搜索。如果 start 包含 Null,則產生一個錯誤。

compare 可選的。數字值,指出在判斷子字符串時所使用的比較方法。如果忽略,則執行二進制比較。關於其值,請參閱“設置值”部分。

設置值

compare參數值如下:

常數 描述
vbUseCompareOption –1 Option Compare語句的設置值來執行比較。
vbBinaryCompare  0 執行二進制比較。
vbTextCompare  1 執行文字比較。
vbDatabaseCompare  2 只用於Microsoft Access。基於您的數據庫信息執行比較。

返回值

InStrRev返回值如下:

如果 InStrRev返回
string1長度爲零。 0
string1Null Null
string2長度爲零 Start
string2Null Null
string2沒有找到。 0
string2string1中找到 找到匹配字符串的位置。
start > Len(string2) 0

說明

請注意,InstrRev函數的語法和Instr函數的語法不相同。


Int、Fix 函數

返回參數的整數部分。

語法

Int(number)

Fix(number)

必要的 number 參數是 Double 或任何有效的數值表達式。如果 number 包含 Null,則返回 Null

說明

IntFix 都會刪除 number 的小數部份而返回剩下的整數。

IntFix 的不同之處在於,如果 number 爲負數,則 Int 返回小於或等於 number 的第一個負整數,而 Fix 則會返回大於或等於 number 的第一個負整數。例如,Int 將 -8.4 轉換成 -9,而 Fix 將 -8.4 轉換成 -8。

Fix(number)

Sgn(number) * Int(Abs(number))

IPmt 函數

返回一個 Double,指定在一段時間內對定期定額支付且利率固定的年金所支付的利息值。

語法

IPmt(rate, per, nper, pv[, fv[, type]])

IPmt 函數有下列命名參數:

部分 描述
rate 必要。Double 指定每一期的利率。例如,如果有一筆貸款年百分率 (APR) 爲百分之十且按月付款的汽車貸款,則每一期的利率爲 0.1/12,或 0.0083。
per 必要。Double 指定在 nper 間範圍 1 中的付款週期。
nper 必要。Double 指定一筆年金的付款總期數。例如,如果在一筆爲期四年的汽車貸款中選擇按月付款方式,則貸款共有 4 * 12(或 48)個付款期。
pv 必要。Double,指定未來一系列付款或收款的現值。例如,當借錢買汽車時,向貸方所借金額爲將來每月償付給貸方款項的現值。
fv 可選。Variant 指定在付清貸款後所希望的未來值或現金結存。例如,貸款的未來值在貸款付清後爲 0 美元。但是,如果想要在 18 年間存下 50,000 美元作爲子女教育基金,那麼 50,000 美元爲未來值。如果省略的話,缺省值爲 0。
type 可選。Variant 指定貸款到期時間。如果貸款在貸款週期結束時到期,請使用 0。如果貸款在週期開始時到期,請使用 1。如果省略的話,缺省值爲 0。

說明

年金是指在一段時間內的一系列固定現金支付。年金可以是貸款(如房屋抵押貸款),也可以是一筆投資(如按月儲蓄計劃)。

在支付期間必須用相同的單位計算 ratenper 參數。例如,如果 rate 用月份計算,則 nper 也必須用月份計算。

對所有參數,用負數表示現金支出(如儲蓄存款),而用正數表示現金收入(如紅利支票)。


IRR 函數

返回一個 Double,指定一系列週期性現金流(支出或收入)的內部利率。

語法

IRR(values()[, guess])

IRR 函數有下列命名參數:

部分 描述
values() 必要。Double 數組,指定現金流值。此數組必須至少含有一個負值(支付)和一個正值(收入)。
guess 可選。Variant,指定 IRR 返回的估算值。如果省略,guess 爲 0.1 (10%)。

說明

返回的內部利率是在正常的時間間隔內,一筆含有支出及收入的投資得到的利率。

IRR 函數使用數組中數值的順序來解釋支付和收入的順序。要確保支付和收入的順序正確。每一時期的現金流不必像年金那樣固定不變。

IRR 是利用疊代進行計算。先從 guess 的值開始,IRR 反覆循環進行計算,直到精確度達到 0.00001%。如果經過 20 次反覆疊代測試還不能得到結果,則 IRR 計算失敗。


IsArray 函數

返回 Boolean 值,指出變量是否爲一個數組。

語法

IsArray(varname)

必要的 varname 參數是一個指定變量的標識符。

說明

如果變量是數組,則 IsArray 返回 True;否則返回 False。對於包含數組的 variant 表達式來說,IsArray 尤爲有用。


IsDate 函數

返回 Boolean 值,指出一個表達式是否可以轉換成日期。

語法

IsDate(expression)

必要的 expression 參數是一個 Variant,包含日期表達式或字符串表達式,這裏的字符串表達式是可以作爲日期或時間來認定的。

說明

如果表達式是一個日期,或可以作爲有效日期識別,則 IsDate 返回 True;否則返回 False。在 Microsoft Windows 中,有效日期的範圍介於公元 100 年 1 月 1 日與公元 9999 年 12 月 31 日之間;其有效範圍隨操作系統不同而不同。


IsEmpty 函數

返回 Boolean 值,指出變量是否已經初始化。

語法

IsEmpty(expression)

必要的 expression 參數是一個 Variant,包含一個數值或字符串表達式。但是,因爲 IsEmpty 被用來確定個別變量是否已初始化,所以 expression 參數通常是單一變量名。

說明

如果變量未初始化或已明確設置爲 Empty,則 IsEmpty 返回 True;否則返回 False。如果 expression 含有多個變量,則 IsEmpty 總是返回 FalseIsEmpty 只返回對 variant 表達式有意義的信息。

IsError 函數

返回 Boolean 值,指出表達式是否爲一個錯誤值。

語法

IsError(expression)

必需的 expression 參數,可以是任何有效表達式。

說明

利用 CVErr 函數將實數轉換成錯誤值就會建立錯誤值。IsError 函數被用來確定一個數值表達式是否表示一個錯誤。如果 expression 參數表示一個錯誤,則 IsError 返回 True;否則返回 False


IsMissing 函數

返回 Boolean 值,指出一個可選的 Variant 參數是否已經傳遞給過程。

語法

IsMissing(argname)

必要的 argname 參數包含一個可選的 Variant 過程參數名。

說明

使用 IsMissing 函數來檢測在調用一個程序時是否提供了可選 Variant 參數。如果對特定參數沒有傳遞值過去,則 IsMissing 返回 True;否則返回 False。如果 IsMissing 對某個參數返回 True,則在其它代碼中使用這個丟失的參數將產生一個用戶自定義的錯誤。如果對 ParamArray 參數使用 IsMissing,則函數總是返回 False。爲了檢測空的 ParamArray,可試看一下數組的上界是否小於它的下界。

注意   IsMissing 對簡單數據類型(例如 IntegerDouble)不起作用,因爲與Variants不同,它們沒有“丟失”標誌位的前提。正由於此,對於可選參數類型,可以指定缺省值。如果調用過程時,參數被忽略,則該參數將具有該缺省值,如下列示例中所示:

Sub MySub(Optional MyVar As String = "specialvalue")
    If MyVar = "specialvalue" Then
       ' MyVar 被忽略。
    Else
    ...
End Sub

在許多情況下,如果用戶從函數調用中忽略,則可以通過使缺省值等於希望 MyVar 所包含的值來完全忽略 If MyVar 測試。這將使您的代碼更簡潔有效。


IsNull 函數

返回 Boolean 值,指出表達式是否不包含任何有效數據 (Null)。

語法

IsNull(expression)

必要的 expression 參數是一個 Variant,其中包含數值表達式或字符串表達式。

說明

如果 expressionNull,IsNull 返回 True;否則 IsNull 返回 False。如果 expression 由多個變量組成,則表達式的任何作爲變量組成成分的 Null 都會使整個表達式返回 True

Null 值指出 Variant 不包含有效數據。Null 與 Empty 不同,後者指出變量尚未初始化。Null 與長度爲零的字符串 (““) 也不同,長度爲零的字符串指的是空串。

重要 使用 IsNull 函數是爲了確定表達式是否包含 Null 值的。在某些情況下,希望表達式取值爲 True,比如希望 If Var = NullIf Var <> Null 取值爲 True,而它們總取值爲 False。這是因爲任何包含 Null 的表達式本身就是 Null,所以爲 False


IsNumeric 函數

返回 Boolean 值,指出表達式的運算結果是否爲數。

語法

IsNumeric(expression)

必要的 expression 參數是一個 Variant,包含數值表達式或字符串表達式。

說明

如果整個 expression 的運算結果爲數字,則 IsNumeric 返回 True;否則返回 False

如果 expression 是日期表達式,則 IsNumeric 返回 False


IsObject 函數

返回 Boolean 值,指出標識符是否表示對象變量。

語法

IsObject(identifier)

必要的 identifier 參數是一個變量名。

說明

IsObject 只用於確定 Variant 是否屬於 VarType vbObject。如果 Variant 實際引用(或曾經引用過)一個對象,或者如果 Variant 包含 Nothing,則可能出現這種情況。

如果 identifier 是 Object類型或任何有效的類類型,或者,如果 identifierVarType vbObject Variant 或用戶自定義的對象,則 IsObject 返回 True;否則返回 False。即使變量已設置成 NothingIsObject 也仍返回 True

使用錯誤捕獲方法可以確認對象引用是否有效。


Join函數

描述

返回一個字符串,該字符串是通過連接某個數組中的多個子字符串而創建的。

語法

Join(list[, delimiter])

Join函數語法有如下幾部分:

部分 描述
list 必需的。包含被連接子字符串的一維數組。
delimiter 可選的。在返回字符串中用於分隔子字符串的字符。如果忽略該項,則使用空格(" ")來分隔子字符串。如果delimiter是零長度字符串(""),則列表中的所有項目都連接在一起,中間沒有分隔符。

LBound 函數

返回一個 Long 型數據,其值爲指定數組維可用的最小下標。

語法

LBound(arrayname[, dimension])

LBound 函數的語法包含下面部分:

部分 描述
arrayname 必需的。數組變量的名稱,遵循標準的變量命名約定。
dimension 可選的;Variant (Long)。指定返回哪一維的下界。1 表示第一維,2 表示第二維,以此類推。如果省略 dimension,就認爲是 1。

說明

LBound 函數與 UBound 函數一起使用,用來確定一個數組的大小。UBound 用來確定數組某一維的上界。

對具有下述維數的數組而言,LBound 的返回值見下表:

Dim A(1 To 100, 0 To 3, -3 To 4)
語句 返回值
LBound(A, 1) 1
LBound(A, 2) 0
LBound(A, 3) -3

所有維的缺省下界都是 0 或 1,這取決於 Option Base 語句的設置。使用 Array 函數創建的數組的下界爲 0;它不受 Option Base 的影響。

對於那些在 Dim 中用 To 子句來設定維數的數組而言,Private、Public、ReDim Static 語句可以用任何整數作爲下界。


LCase 函數

返回轉成小寫的 String。

語法

LCase(string)

必要的 string 參數可以是任何有效的字符串表達式。如果 string 包含 Null,將返回 Null。

說明

只有大寫的字母會轉成小寫;所有小寫字母和非字母字符保持不變。


Left 函數

返回 Variant (String),其中包含字符串中從左邊算起指定數量的字符。

語法

Left(string, length)

Left 函數的語法有下面的命名參數:

部分 說明
string 必要參數。字符串表達式其中最左邊的那些字符將被返回。如果 string 包含 Null,將返回 Null。
length 必要參數;爲 Variant (Long)。數值表達式,指出將返回多少個字符。如果爲 0,返回零長度字符串 ("")。如果大於或等於 string 的字符數,則返回整個字符串。

說明

欲知 string 的字符數,使用 Len 函數。

注意    LeftB 函數作用於包含在字符串中的字節數據。所以 length 指定的是字節數,而不是要返回的字符數。


Len 函數

返回 Long,其中包含字符串內字符的數目,或是存儲一變量所需的字節數。

語法

Len(string | varname)

Len 函數的語法有下面這些部分:

部分 說明
string 任何有效的字符串表達式。如果 string 包含 Null,會返回 Null。
Varname 任何有效的變量名稱。如果 varname 包含 Null,會返回 Null。如果 varname 是 Variant,Len 會視其爲 String 並且總是返回其包含的字符數。

說明

兩個可能的參數必須有其一(而且只能有其一)。如爲用戶定義類型,Len 會返回其寫至文件的大小。

注意   LenB 函數作用於字符串中的字節數據,如同在雙字節字符集(DBCS)語言中一樣。所以 LenB 返回的是用於代表字符串的字節數,而不是返回字符串中字符的數量。如爲用戶自定義類型,LenB 返回在內存中的大小,包括元素之間的襯墊。對於使用 LenB的示例代碼,請參閱示例主題中的第二個示例。

注意 當在用戶自定義數據類型中使用變長字符串時,Len 可能不能確定實際存儲所需的字節數目。


Loc 函數

返回一個 Long,在已打開的文件中指定當前讀/寫位置。

語法

Loc(filenumber)

必要的 filenumber 參數是任何一個有效的 Integer 文件號。

說明

Loc 函數對各種文件訪問方式的返回值如下:

方式 返回值
Random 上一次對文件進行讀出或寫入的記錄號。
Sequential 文件中當前字節位置除以 128 的值。但是,對於順序文件而言,不會使用 Loc 的返回值,也不需要使用 Loc 的返回值。
Binary 上一次讀出或寫入的字節位置。


LOF 函數

返回一個 Long,表示用 Open 語句打開的文件的大小,該大小以字節爲單位。

語法

LOF(filenumber)

必要的 filenumber 參數是一個 Integer,包含一個有效的文件號。

注意 對於尚未打開的文件,使用 FileLen 函數將得到其長度。


Log 函數

返回一個 Double,指定參數的自然對數值。

語法

Log(number)

必要的 number 參數是 Double 或任何有效的大於 0 的數值表達式。

說明

自然對數是以 e 爲底的對數。常數 e 的值大約是 2.718282。

如下所示,將 x 的自然對數值除以 n 的自然對數值,就可以對任意底 n 來計算數值 x 的對數值:

Logn(x) = Log(x) / Log(n)

下面的示例說明如何編寫一個函數來求以 10 爲底的對數值:

Static Function Log10(X)
   Log10 = Log(X) / Log(10#)
End Function

LTrim、RTrim與 Trim 函數

返回 Variant (String),其中包含指定字符串的拷貝,沒有前導空白 (LTrim)、尾隨空白 (RTrim) 或前導和尾隨空白 (Trim)。

語法

LTrim(string)

RTrim(string)

Trim(string)

必要的 string 參數可以是任何有效的字符串表達式。如果 string 包含 Null,將返回 Null


Mid 函數

返回 Variant (String),其中包含字符串中指定數量的字符。

語法

Mid(string, start[, length])

Mid 函數的語法具有下面的命名參數:

部分 說明
string 必要參數。字符串表達式,從中返回字符。如果 string 包含 Null,將返回 Null
start 必要參數。爲 Long。string 中被取出部分的字符位置。如果 start 超過 string 的字符數,Mid 返回零長度字符串 ("")
length 可選參數;爲 Variant (Long)。要返回的字符數如果省略或 length 超過文本的字符數(包括 start 處的字符),將返回字符串中從 start 到尾端的所有字符。

說明

欲知 string 的字符數,可用 Len 函數。

注意   MidB 函數作用於字符串中包含的字節數據,如同在雙字節字符集(DBCS)語言中一樣。因此其參數指定的是字節數,而不是字符數。對於使用 MidB的示例代碼,請參閱示例主題中的第二個示例。


Minute 函數

返回一個 Variant (Integer),其值爲 0 到 59 之間的整數,表示一小時中的某分鐘。

語法

Minute(time)

必要的 time 參數,可以是任何能夠表示時刻的 Variant、數值表達式、字符串表達式或它們的組合。如果 time 包含 Null,則返回 Null


MIRR 函數

返回一個 Double,指定一系列修改過的週期性現金流(支出或收入)的內部利率。

語法

MIRR(values(), finance_rate, reinvest_rate)

MIRR 函數有下列命名參數:

部分 描述
values() 必要。Double 數組,指定現金流值。此數組至少要包含一個負值(支付)和一個正值(收入)。
finance_rate 必要。Double 指定財務成本上的支付利率。
reinvest_rate 必要。Double 指定由現金再投資所得利率。

說明

修改過的返回內部利率是指在用不同的利率計算支出和收入時的內部利率。MIRR 函數既考慮投資成本 (finance_rate),也考慮現金再投資所得利率 (reinvest_rate)。

finance_ratereinvest_rate 參數是用十進制數值表示的百分比。例如,0.12 表示百分之十二。

MIRR 函數用數組中的數值順序來解釋支付和收入的順序。要確保支付和收入的輸入順序正確。


Month 函數

返回一個 Variant (Integer),其值爲 1 到 12 之間的整數,表示一年中的某月。

語法

Month(date)

必要的 date 參數,可以是任何能夠表示日期的 Variant、數值表達式、字符串表達式或它們的組合。如果 date 包含 Null,則返回 Null


MonthName函數

描述

返回一個表示指定月份的字符串。

語法

MonthName(month[, abbreviate])

MonthName函數語法有如下幾部分:

部分 描述
month 必需的。月份的數值表示。例如一月是1,二月是2,等等。
abbreviate 可選的。Boolean值,表示月份名是否縮寫。如果忽略,缺省值爲False,表明月份名不能被縮寫。


MsgBox 函數

在對話框中顯示消息,等待用戶單擊按鈕,並返回一個 Integer 告訴用戶單擊哪一個按鈕。

語法

MsgBox(prompt[, buttons] [, title] [, helpfile, context])

MsgBox 函數的語法具有以下幾個命名參數:

部分 描述
Prompt 必需的。字符串表達式,作爲顯示在對話框中的消息。prompt 的最大長度大約爲 1024 個字符,由所用字符的寬度決定。如果 prompt 的內容超過一行,則可以在每一行之間用回車符 (Chr(13))、換行符 (Chr(10)) 或是回車與換行符的組合 (Chr(13) & Chr(10)) 將各行分隔開來。
Buttons 可選的。數值表達式是值的總和,指定顯示按鈕的數目及形式,使用的圖標樣式,缺省按鈕是什麼以及消息框的強制迴應等。如果省略,則 buttons 的缺省值爲 0。
Title 可選的。在對話框標題欄中顯示的字符串表達式。如果省略 title,則將應用程序名放在標題欄中。
Helpfile 可選的。字符串表達式,識別用來向對話框提供上下文相關幫助的幫助文件。如果提供了 helpfile,則也必須提供 context
Context 可選的。數值表達式,由幫助文件的作者指定給適當的幫助主題的幫助上下文編號。如果提供了 context,則也必須提供 helpfile

設置值

buttons 參數有下列設置值:

常數 描述
vbOKOnly 0 只顯示 OK 按鈕。
VbOKCancel 1 顯示 OKCancel 按鈕。
VbAbortRetryIgnore 2 顯示 AbortRetryIgnore 按鈕。
VbYesNoCancel 3 顯示 YesNoCancel 按鈕。
VbYesNo 4 顯示 YesNo 按鈕。
VbRetryCancel 5 顯示 RetryCancel 按鈕。
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 系統強制返回;全部應用程序都被掛起,直到用戶對消息框作出響應才繼續工作。
vbMsgBoxHelpButton 16384 將Help按鈕添加到消息框
VbMsgBoxSetForeground 65536 指定消息框窗口作爲前景窗口
vbMsgBoxRight 524288 文本爲右對齊
vbMsgBoxRtlReading 1048576 指定文本應爲在希伯來和阿拉伯語系統中的從右到左顯示

第一組值 (0-5) 描述了對話框中顯示的按鈕的類型與數目;第二組值 (16, 32, 48, 64) 描述了圖標的樣式;第三組值 (0, 256, 512) 說明哪一個按鈕是缺省值;而第四組值 (0, 4096) 則決定消息框的強制返回性。將這些數字相加以生成 buttons 參數值的時候,只能由每組值取用一個數字。

注意 這些常數都是 Visual Basic for Applications (VBA) 指定的。結果,可以在程序代碼中到處使用這些常數名稱,而不必使用實際數值。

返回值

常數 描述
vbOK 1 OK
vbCancel 2 Cancel
vbAbort 3 Abort
vbRetry 4 Retry
vbIgnore 5 Ignore
vbYes 6 Yes
vbNo 7 No

說明

在提供了 helpfilecontext 的時候,用戶可以按 F1 來查看與 context 相應的幫助主題。像 Microsoft Excel 這樣一些主機應用程序也會在對話框中自動添加一個 Help 按鈕。

如果對話框顯示 Cancel 按鈕,則按下 ESC 鍵與單擊 Cancel 按鈕的效果相同。如果對話框中有 Help 按鈕,則對話框中提供有上下文相關的幫助。但是,直到其它按鈕中有一個被單擊之前,都不會返回任何值。

注意 如果還要指定第一個命名參數以外的參數,則必須在表達式中使用 MsgBox。爲了省略某些位置參數,必須加入相應的逗號分界符。


Now 函數

返回一個 Variant (Date),根據計算機系統設置的日期和時間來指定日期和時間。

語法

Now


NPer 函數

返回一個 Double,指定定期定額支付且利率固定的總期數。

語法

NPer(rate, pmt, pv[, fv[, type]])

NPer 函數有下列命名參數:

部分 描述
rate 必要。Double 指定每一期的利率。例如,如果有一筆貸款年百分率 (APR) 爲百分之十並按月付款的汽車貸款,則每一期的利率爲 0.1/12 或 0.0083。
pmt 必要。Double 指定每一期所付金額。付款金額通常包含本金和利息,且付款金額在年金的有效期間不變。
pv 必要。Double 指定未來一系列付款或收款的現值。例如,當貸款買一輛汽車時,向貸方所借貸的金額爲將來每月償付給貸方款項的現值。
fv 可選。Variant 指定在付清貸款後所希望的未來值或現金結存。例如,貸款的未來值在貸款付清後爲 0 美元。但是,如果想要在 18 年間存下 50,000 美元作爲子女教育基金,那麼 50,000 美元爲未來值。如果省略的話,缺省值爲 0。
type 可選。Variant 指定貸款到期時間。如果貸款是在貸款週期結束時到期,請使用 0,如果貸款是在週期開始時到期,請使用 1。如果省略的話,缺省值爲 0。

說明

年金是在一段時間內一系列固定現金支付。年金可以是貸款(如房屋抵押貸款),也可以是一筆投資(如按月儲蓄計劃)。

對所有參數,用負數表示現金支出(如儲蓄存款),而用正數表示現金收入(如紅利支票)。


NPV 函數

返回一個 Double,指定根據一系列定期的現金流(支付和收入)和貼現率而定的投資淨現值。

語法

NPV(rate, values())

NPV 函數有下列命名參數:

部分 描述
rate 必要。Double 指定在一期間內的貼現率,用十進制表示。
values() 必要。Double 數組 指定現金流值。此數組至少要包含一個負值(支付)和一個正值(收入)。

說明

投資的淨現值是未來一系列支付或收入的當前價值。

NPV 函數使用數組中數值的順序來解釋支付和收入的順序。要確保支付和收入值是用正確的順序輸入的。

NPV 投資在第一筆現金流值之前開始計算週期,而結束於數組中最後的現金流值。

淨現值是根據未來的現金流進行計算的。如果第一筆現金流在第一期開始時發生,那麼 NPV 返回的值必須加上第一筆值纔是淨現值。而且 values() 數組不可包含第一筆值。

NPV 函數與 PV 函數(現值)相似,只是 PV 函數在一個期間的開始或結束時才允許有現金流。與可變的 NPV 現金流值不同,PV 的現金流在整個投資期間必須固定。


Oct 函數

返回 Variant (String),代表一數值的八進制值。

語法

Oct(number)

必要的 number 參數爲任何有效的數值表達式或字符串表達式。

說明

如果 number 尚非整數,那麼在執行前會先四捨五入成最接近的整數。

如果 number Oct 返回
Null Null
Empty 零 (0)
任何其他的數字 最多可到 11 個八進制字符。

可以將適當範圍的數前綴以 &O 來直接表示八進制數字。例如,八進制表示法的 &O10 代表十進制的 8。


Partition 函數

返回一個 Variant (String),指定一個範圍,在一系列計算的範圍中指定的數字出現在這個範圍內。

語法

Partition(number, start, stop, interval)

Partition 函數的語法含有下面這些命名參數:

部分 描述
number 必要參數。整數,在所有範圍中判斷這個整數是否出現。
start 必要參數。整數,數值範圍的開始值,這個數值不能小於 0。
stop 必要參數。整數,數值範圍的結束值,這個數值不能等於或小於 start

說明

Partition 函數會標識 number 值出現的特定範圍,並返回一個 Variant (String) 來描述這個範圍。Partition 函數在查詢中是最有用的。可以創建一個選擇查詢顯示有多少定單落在幾個變化的範圍內,例如,定單數從 1 到 1000、1001 到 2000,以此類推。

下面的表格使用三組 startstop 以及 interval 部分,來顯示怎樣決定這個範圍。第一個範圍和最後一個範圍兩列顯示 Partition 的返回值,此範圍的低端 (lowervalue) 和高端 (uppervalue) 是以冒號分開的。

start stop interval 第一個範圍之前 第一個範圍 最後一個範圍 最後一個範圍之後
0 99 5 " :-1" " 0: 4" " 95: 99" " 100: "
20 199 10 " : 19" " 20: 29" " 190: 199" " 200: "
100 1010 20 " : 99" " 100: 119" " 1000: 1010" " 1011: "

從上面的表格中得知,在第三行中,由 startstop 所定義的數值範圍不能以 interval 來均分。所以,即使 interval 是 20,最後一個範圍也只能擴展到stop(11 個數)。

如果需要的話,Partition 會在返回的範圍中加上足夠的空白,以便讓返回值在冒號的左右兩側有相同的字符數,其值就是 stop 中的字符數再加一。如此可確保當要使用 Partition 與其它的數值作運算時,所得的字符串,可以在之後的排序操作中得到正確的結果。

如果 interval 是 1,則範圍便是 number:number,而不管 startstop 參數如何。比如說,如果 interval 是 1,number 是 100,而 stop 是 1000,則 Partition 會返回 "  100:  100"。

如果任何部分是 Null,則 Partition 會返回一個 Null


Pmt 函數

返回一個 Double,指定根據定期定額支付且利率固定的年金支付額。

語法

Pmt(rate, nper, pv[, fv[, type]])

Pmt 函數有下列命名參數:

部分 描述
rate 必要。Double 指定每一期的利率。例如,如果有一筆貸款年百分比率 (APR) 爲百分之十且按月付款的汽車貸款,則每一期的利率爲 0.1/12 或 0.0083。
nper 必要。Integer 指定一筆年金的付款總期數。例如,如果對一筆爲期四年的汽車貸款選擇按月付款,則貸款共有 4 * 12(或 48)個付款期。
pv 必要。Double 指定未來一系列付款或收款的現值。例如,當貸款買一輛汽車時,向貸方所借貸的金額爲將來每月償付給貸方款項的現值。
fv 可選。Variant 指定在付清貸款後所希望的未來值或現金結存。例如,貸款的未來值在貸款付清後爲 0 美元。但是,如果想要在 18 年間存下 50,000 美元作爲子女教育基金,那麼 50,000 美元爲未來值。如果省略的話,缺省值爲 0。
type 可選。Variant,指定貸款到期時間。如果貸款是在貸款週期結束時到期,請使用 0。如果貸款是在週期開始時到期,則請使用 1。如果省略的話,缺省值爲 0。

說明

年金是在一段時間內一系列固定現金支付,年金可以是貸款(如房屋抵押貸款),也可以是一筆投資(如按月儲蓄計劃)。

在支付期間必須用相同的單位計算 ratenper 參數。例如,如果 rate 用月份計算,則 nper 也必須用月份計算。

對所有參數,用負數表示現金支出(如儲蓄存款),而用正數表示現金收入(如紅利支票)。


PPmt 函數

返回一個 Double,指定在定期定額支付且利率固定的年金的指定期間內的本金償付額。

語法

PPmt(rate, per, nper, pv[, fv[, type]])

PPmt 函數有下列命名參數:

部分 描述
rate 必要。Double 指定每一期的利率。例如,如果有一筆貸款年百分比率 (APR) 爲百分之十且按月付款的汽車貸款,則每一期的利率爲 0.1/12 或 0.0083。
per 必要。Integer 指定在 nper 間範圍 1 中的付款週期。
nper 必要。Integer 指定一筆年金的付款總期數。例如,如果對一筆爲期四年的汽車貸款選擇按月付款,則貸款共有 4 * 12(或 48)個付款期。
pv 必要。Double 指定未來一系列付款或收款的現值。例如,當貸款買一輛汽車時,向貸方所借貸的金額爲將來每月償付給貸方款項的現值。
fv 可選。Variant 指定在付清貸款後所希望的未來值或現金結存值。例如,貸款的未來值在貸款付清後爲 0 美元。但是,如果想要在 18 年間存下 50,000 美元作爲子女教育基金,那麼 50,000 美元爲未來值。如果省略的話,缺省值爲 0。
type 可選。Variant 指定貸款到期時間。如果貸款是在貸款週期結束時到期,則請使用 0。如果貸款是在週期開始時到期,則請使用 1。如果省略的話,缺省值爲 0。

說明

年金是在一段時間內一系列固定現金支付。年金可以是貸款(如房屋抵押貸款),也可以是一筆投資(如按月儲蓄計劃)。

在支付期間必須用相同的單位計算 ratenper 參數。例如,如果 rate 用月份計算,則 nper 也必須用月份計算。

對所有參數,用負數表示現金支出(如儲蓄存款),而用正數表示現金收入(如紅利支票)。


PV 函數

返回一個 Double 指定在未來定期、定額支付且利率固定的年金現值。

語法

PV(rate, nper, pmt[, fv[, type]])

PV 函數有下列命名參數:

部分 描述
rate 必要。Double 指定每一期的利率。例如,如果有一筆貸款年百分比率 (APR) 爲百分之十且按月付款的汽車貸款,則每一期的利率爲 0.1/12 或 0.0083。
nper 必要。Integer 指定一筆年金的付款總期數。例如,如果對一筆爲期四年的汽車貸款選擇按月付款,則貸款共有 4 * 12(或 48)個付款期。
pmt 必要。Double 指定每一期的付款金額。付款金額通常包含本金和利息,且此付款金額在年金的有效期間不變。
fv 可選。Variant,指定在付清貸款後所希望的未來值或現金結存。例如,貸款的未來值在貸款付清後爲 0 美元。但是,如果想要在 18 年間存下 50,000 美元作爲子女教育基金,那麼 50,000 美元爲未來值。如果省略的話,缺省值爲 0。
type 可選。Variant 指定貸款到期時間。如果貸款是在貸款週期結束時到期,則請使用 0。如果貸款是在週期開始時到期,則請使用 1。如果省略的話,缺省值爲 0。

說明

年金是在一段時間內一系列固定現金支付。年金可以是貸款(如房屋抵押貸款),也可以是一筆投資(如按月儲蓄計劃)。

在支付期間必須用相同的單位計算 ratenper 參數。例如,如果 rate 用月份計算,則 nper 也必須用月份計算。

對所有參數,現金支出(如儲蓄存款)用負數表示,而現金收入(如紅利支票)用正數表示。


QBColor 函數

返回一個 Long,用來表示所對應顏色值的 RGB 顏色碼。

語法

QBColor(color)

必要的 color 參數是一個界於 0 到 15 的整型。

設置值

color 參數有以下這些設置:

顏色 顏色
0 黑色 8 灰色
1 蘭色 9 亮蘭色
2 綠色 10 亮綠色
3 青色 11 亮青色
4 紅色 12 亮紅色
5 洋紅色 13 亮洋紅色
6 黃色 14 亮黃色
7 白色 15 亮白色

說明

color 參數代表使用於早期版本的 Basic(諸如 Microsoft Visual Basic for MS-DOS 以及 Basic Compiler)的顏色值。始於最低有效字節,返回值指定了紅、綠、藍三原色的值,用於設置成 VBA中RGB 系統的對應顏色。


Rate 函數

返回一個 Double,指定每一期的年金利率。

語法

Rate(nper, pmt, pv[, fv[, type[, guess]]])

Rate 函數有下列命名參數:

部分 描述
nper 必要。Double 指定一筆年金的付款總期數。例如,如果對一筆爲期四年的汽車貸款選擇按月付款,則貸款共有 4 * 12(或 48)個付款期。
pmt 必要。Double,指定每一期的付款金額。付款金額通常包含本金和利息,且此付款金額在年金的有效期間不變。
pv 必要。Double 指定未來一系列付款或收款的現值。例如,當貸款買一輛汽車時,向貸方所借貸的金額爲將來每月償付給貸方款項的現值。
fv 可選。Variant 指定在付清貸款後所希望的未來值或現金結存。例如,貸款的未來值在貸款付清後爲 0 美元。但是,如果想要在 18 年間存下 50,000 美元作爲子女教育基金,那麼 50,000 美元爲未來值。如果省略的話,缺省值爲 0。
type 可選。Variant,指定貸款到期時間,如果貸款是在貸款週期結束時到期,則請使用 0。如果貸款是在週期開始時到期,則請使用 1。如果省略的話,缺省值爲 0。
guess 可選。Variant 指定 Rate 返回的估算值。如果省略,則 guess 爲 0.1 (10%)。

說明

年金是在一段時間內的一系列固定現金支付,年金可以是貸款(如房屋抵押貸款)或是一筆投資(如按月儲蓄計劃)。

對所有參數,現金支出(如儲蓄存款)用負數表示,而現金收入(如紅利支票)用正數表示。

Rate 是疊代計算的。先從 guess 的值開始,Rate 反覆循環計算,直到精確度達到 0.00001%。如果經過 20 次疊代測試還不能得到結果,則 Rate 計算失敗。如果猜測是 10% 而 Rate 計算失敗,則請試用不同的 guess.值。


Replace函數

描述

返回一個字符串,該字符串中指定的子字符串已被替換成另一子字符串,並且替換髮生的次數也是指定的。

語法

Replace(expression, find, replacewith[, start[, count[, compare]]])

Replace函數語法有如下幾部分:

部分 描述
expression 必需的。字符串表達式,包含要替換的子字符串。
find 必需的。要搜索到的子字符串。
replacewith 必需的。用來替換的子字符串。
start 可選的。在表達式中子字符串搜索的開始位置。如果忽略,假定從1開始。
count 可選的。子字符串進行替換的次數。如果忽略,缺省值是 -1,它表明進行所有可能的替換。
compare 可選的。數字值,表示判別子字符串時所用的比較方式。關於其值,請參閱“設置值”部分。

設置值

compare參數的設置值如下:

常數 描述
vbUseCompareOption -1 使用Option Compare語句的設置值來執行比較。
vbBinaryCompare 0 執行二進制比較。
vbTextCompare 1 執行文字比較。
vbDatabaseCompare 2 僅用於Microsoft Access。基於您的數據庫的信息執行比較。

返回值

Replace的返回值如下:

如果 Replace返回值
expression長度爲零 零長度字符串("")。
expressionNull 一個錯誤。
find長度爲零 expression的複本。
replacewith長度爲零 expression的複本,其中刪除了所有出現的find 的字符串。
start > Len(expression) 長度爲零的字符串。
count is 0 expression.的複本。

說明

Replace函數的返回值是一個字符串,但是,其中從start所指定的位置開始,到expression字符串的結尾處的一段子字符串已經發生過替換動作。並不是原字符串從頭到尾的一個複製。


RGB 函數

返回一個 Long整數,用來表示一個 RGB 顏色值。

語法

RGB(red, green, blue)

RGB 函數的語法含有以下這些命名參數:

部分 描述
red 必要參數;Variant (Integer)。數值範圍從 0 到 255,表示顏色的紅色成份。
green 必要參數;Variant (Integer)。數值範圍從 0 到 255,表示顏色的綠色成份。
blue 必要參數;Variant (Integer)。數值範圍從 0 到 255,表示顏色的蘭色成份。

說明

可以接受顏色說明的應用程序的方法和屬性期望這個說明是一個代表 RGB 顏色值的數值。一個 RGB 顏色值指定紅、綠、藍三原色的相對亮度,生成一個用於顯示的特定顏色。

傳給 RGB 的任何參數的值,如果超過 255,會被當作 255。

下面的表格顯示一些常見的標準顏色,以及這些顏色的紅、綠、藍三原色的成份:

顏色 紅色值 綠色值 蘭色值
黑色 0 0 0
蘭色 0 0 255
綠色 0 255 0
青色 0 255 255
紅色 255 0 0
洋紅色 255 0 255
黃色 255 255 0
白色 255 255 255


Right 函數

返回 Variant (String),其中包含從字符串右邊取出的指定數量的字符。

語法

Right(string, length)

Right 函數的語法具有下面的命名參數:

部分 說明
string 必要參數。字符串表達式,從中最右邊的字符將被返回。如果 string 包含 Null,將返回 Null
length 必要參數;爲 Variant (Long)。爲數值表達式,指出想返回多少字符。如果爲 0,返回零長度字符串 ("")。如果大於或等於 string 的字符數,則返回整個字符串。

說明

欲知 string 的字符數,用 Len 函數。

注意    RightB 函數作用於包含在字符串中的字節數據。所以 length 指定的是字節數,而不是指定返回的字符數。


Rnd 函數

返回一個包含隨機數值的 Single

語法

Rnd[(number)]

可選的 number 參數是 Single 或任何有效的數值表達式。

返回值

如果 number 的值是 Rnd 生成
小於 0 每次都使用 number 作爲隨機數種子得到的相同結果。
大於 0 序列中的下一個隨機數。
等於 0 最近生成的數。
省略 序列中的下一個隨機數。

說明

Rnd 函數返回小於 1 但大於或等於 0 的值。

number 的值決定了 Rnd 生成隨機數的方式。

對最初給定的種子都會生成相同的數列,因爲每一次調用 Rnd 函數都用數列中的前一個數作爲下一個數的種子。

在調用 Rnd 之前,先使用無參數的 Randomize 語句初始化隨機數生成器,該生成器具有根據系統計時器得到的種子。

爲了生成某個範圍內的隨機整數,可使用以下公式:

Int((upperbound - lowerbound + 1) * Rnd + lowerbound)

這裏,upperbound 是隨機數範圍的上限,而 lowerbound 則是隨機數範圍的下限。

注意 若想得到重複的隨機數序列,在使用具有數值參數的 Randomize 之前直接調用具有負參數值的 Rnd。使用具有同樣 number 值的 Randomize 是不會得到重複的隨機數序列的。


Round函數

描述

返回一個數值,該數值是按照指定的小數位數進行四捨五入運算的結果。

語法

Round(expression [,numdecimalplaces])

Round函數語法有如下幾部分:

部分 描述
expression 必需的。要進行四捨五入運算的數值表達式。
numdecimalplaces 可選的。數字值,表示進行四捨五入運算時,小數點右邊應保留的位數。如果忽略,則Round函數返回整數。


Second 函數

返回一個 Variant (Integer),其值爲 0 到 59 之間的整數,表示一分鐘之中的某個秒。

語法

Second(time)

必要的 time 參數,可以是任何能夠表示時刻的 Variant、數值表達式、字符串表達式或它們的組合。如果 time 包含 Null,則返回 Null


Seek 函數

返回一個 Long,在 Open 語句打開的文件中指定當前的讀/寫位置。

語法

Seek(filenumber)

必要的 filenumber 參數是一個包含有效文件號的 Integer。

說明

Seek 函數返回介於 1 和 2,147,483,647(相當於 2^31 - 1)之間的值。

對各種文件訪問方式的返回值如下:

方式 返回值
Random 下一個讀出或寫入的記錄號。
Binary,
Output,
Append,
Input
下一個操作將要發生時所在的字節位置。文件中的第一個字節位於位置 1,第二個字節位於位置 2,依此類推。

Sgn 函數

返回一個 Variant (Integer),指出參數的正負號。

語法

Sgn(number)

必要的 number 參數是任何有效的數值表達式。

返回值

如果 number Sgn 返回
大於 0 1
等於 0 0
小於 0 -1

說明

number 參數的符號決定了 Sgn 函數的返回值。


Shell 函數

執行一個可執行文件,返回一個 Variant (Double),如果成功的話,代表這個程序的任務 ID,若不成功,則會返回 0。

語法

Shell(pathname[,windowstyle])

Shell 函數的語法含有下面這些命名參數:

部分 描述
pathname 必要參數。Variant (String),要執行的程序名,以及任何必需的參數或命令行變量,可能還包括目錄或文件夾,以及驅動器。
Windowstyle 可選參數。Variant (Integer),表示在程序運行時窗口的樣式。如果 windowstyle 省略,則程序是以具有焦點的最小化窗口來執行的。

windowstyle 命名參數有以下這些值:

常量 描述
vbHide 0 窗口被隱藏,且焦點會移到隱式窗口。
VbNormalFocus 1 窗口具有焦點,且會還原到它原來的大小和位置。
VbMinimizedFocus 2 窗口會以一個具有焦點的圖標來顯示。
VbMaximizedFocus 3 窗口是一個具有焦點的最大化窗口。
VbNormalNoFocus 4 窗口會被還原到最近使用的大小和位置,而當前活動的窗口仍然保持活動。
VbMinimizedNoFocus 6 窗口會以一個圖標來顯示。而當前活動的的窗口仍然保持活動。

說明

如果 Shell 函數成功地執行了所要執行的文件,則它會返回程序的任務 ID。任務 ID 是一個唯一的數值,用來指明正在運行的程序。如果 Shell 函數不能打開命名的程序,則會產生錯誤。

注意 缺省情況下,Shell 函數是以異步方式來執行其它程序的。也就是說,用 Shell 啓動的程序可能還沒有完成執行過程,就已經執行到 Shell 函數之後的語句。


Sin 函數

返回一 Double,指定參數的 sine(正弦)值。

語法

Sin(number)

必要的 number 參數是 Double 或任何有效的數值表達式,表示一個以弧度爲單位的角。

說明

Sin 函數取一角度爲參數值,並返回角的對邊長度除以斜邊長度的比值。

結果的取值範圍在 -1 到 1 之間。

爲了將角度轉換爲弧度,請將角度乘以 pi /180。爲了將弧度轉換爲角度,請將弧度乘以 180/pi。


SLN 函數

返回一個 Double,在一期裏指定一項資產的直線折舊。

語法

SLN(cost, salvage, life)

SLN 函數有下列命名參數:

部分 描述
cost 必要。Double 指定資產的初始成本。
salvage 必要。Double 指定資產在可用年限結束後的價值。
life 必要。Double 指定資產的可用年限。

說明

折舊期間必須用與 life 參數相同的單位表示。所有參數都必須是正數。


Space 函數

返回特定數目空格的 Variant (String)。

語法

Space(number)

必要的 number 參數爲字符串中想要的空格數。

說明

Space 函數在格式輸出或清除固定長度字符串數據時很有用。


Spc 函數

Print # 語句或 Print 方法一起使用,對輸出進行定位。

語法

Spc(n)

必要的 n 參數是在顯示或打印列表中的下一個表達式之前插入的空白數。

說明

如果 n 小於輸出行的寬度,則下一個打印位置將緊接在數個已打印的空白之後。如果 n 大於輸出行的寬度,則 Spc 利用下列公式計算下一個打印位置:

currentprintposition + (n Mod width)

例如,如果當前輸出位置爲 24,而輸出行的寬度爲 80,並指定了 Spc(90),則下一個打印將從位置 34 開始(當前打印位置 + 90/80 的餘數)。如果當前打印位置和輸出行寬度之間的差小於 n(或 n Mod width),則 Spc 函數會跳到下一行的開頭,併產生數量爲 n - (width - urrentprintposition) 的空白。

注意 要確保表格欄寬度足以容納較寬的字符串。

Print 方法與間距字體一起使用時,使用 Spc 函數打印的空格字符的寬度總是等於選用字體內以磅數爲單位的所有字符的平均寬度。但是,在已打印字符的個數與那些字符所佔據的定寬列的數目之間不存在任何關係。例如,大寫英文字母 W 佔據超過一個定寬的列,而小寫字母 i 則佔據少於一個定寬的列。


Split函數

描述

返回一個下標從零開始的一維數組,它包含指定數目的子字符串。

語法

Split(expression[, delimiter[, count[, compare]]])

Split函數語法有如下幾部分:

部分 描述
expression 必需的。包含子字符串和分隔符的字符串表達式 。如果expression是一個長度爲零的字符串(""),Split則返回一個空數組,即沒有元素和數據的數組。
delimiter 可選的。用於標識子字符串邊界的字符串字符。如果忽略,則使用空格字符(" ")作爲分隔符。如果delimiter是一個長度爲零的字符串,則返回的數組僅包含一個元素,即完整的 expression字符串。
count 可選的。要返回的子字符串數,-1表示返回所有的子字符串。
compare 可選的。數字值,表示判別子字符串時使用的比較方式。關於其值,請參閱“設置值”部分。

設置值

compare參數的設置值如下:

常數 描述
vbUseCompareOption -1 Option Compare語句中的設置值執行比較。
vbBinaryCompare 0 執行二進制比較。
vbTextCompare 1 執行文字比較。
vbDatabaseCompare 2 僅用於Microsoft Access。基於您的數據庫的信息執行比較。


Sqr 函數

返回一個 Double,指定參數的平方根。

語法

Sqr(number)

必要的 number 參數 number 是 Double 或任何有效的大於或等於 0 的數值表達式。


Str 函數

返回代表一數值的 Variant (String)。

語法

Str(number)

必要的 number 參數爲一 Long,其中可包含任何有效的數值表達式。

說明

當一數字轉成字符串時,總會在前頭保留一空位來表示正負。如果 number 爲正,返回的字符串包含一前導空格暗示有一正號。

使用 Format 函數可將數值轉成必要的格式,如日期、時間、貨幣或其他用戶自定義格式。與 Str 不同的是,Format 函數不包含前導空格來放置 number 的正負號。

注意   Str 函數只視句點 (.) 爲有效的小數點。如果使用不同的小數點(例如,國際性的應用程序),可使用 CStr 將數字轉成字符串。


StrComp 函數

返回 Variant (Integer),爲字符串比較的結果。

語法

StrComp(string1, string2[, compare])

StrComp 函數的語法有下面的命名參數:

部分 說明
string1 必要參數。任何有效的字符串表達式。
string2 必要參數。任何有效的字符串表達式。
Compare 可選參數。指定字符串比較的類型。如果 compare 參數是 Null,將發生錯誤。如果省略 compareOption Compare 的設置將決定比較的類型。

設置

compare 參數設置爲:

常數 描述
vbUseCompareOption -1 使用Option Compare語句設置執行一個比較。
vbBinaryCompare 0 執行一個二進制比較。
vbTextCompare 1 執行一個按照原文的比較。
vbDatabaseCompare 2 僅適用於Microsoft Access,執行一個基於數據庫信息的比較。

返回值

StrComp 函數有下列返回值:

如果 StrComp 返回
string1 小於 string2 -1
string1 等於 string2 0
string1 大於 string2 1
string1 string 2Null Null


StrConv 函數

返回按指定類型轉換的 Variant (String)。

語法

StrConv(string, conversion, LCID)

StrConv 函數的語法有下面的命名參數:

部分 說明
string 必要參數。要轉換的字符串表達式。
conversion 必要參數。Integer。其值的和決定轉換的類型。
LCID 可選的。如果與系統LocaleID不同,則爲LocaleID(系統LocaleID爲缺省值。)

設置值

conversion 參數的設置值爲:

常數 說明
vbUpperCase 1 將字符串文字轉成大寫。
vbLowerCase 2 將字符串文字轉成小寫。
vbProperCase 3 將字符串中每個字的開頭字母轉成大寫。
vbWide* 4* 將字符串中單字節字符轉成雙字節字符。
vbNarrow* 8* 將字符串中雙字節字符轉成單字節字符。
vbKatakana** 16** 將字符串中平假名字符轉成片假名字符。
vbHiragana** 32** 將字符串中片假名字符轉成平假名字符。
vbUnicode 64 根據系統的缺省碼頁將字符串轉成 Unicode。
vbFromUnicode 128 將字符串由 Unicode 轉成系統的缺省碼頁。

*應用到遠東國別。
**僅應用到日本。

注意 這些常數是由 VBA 指定的。可以在程序中使用它們來替換真正的值。其中大部分是可以組合的,例如 vbUpperCase + vbWide,互斥的常數不能組合,例如 vbUnicode + vbFromUnicode。當在不適用的國別使用常數 vbWidevbNarrowvbKatakana,和 vbHiragana 時,就會導致運行時錯誤。

下面是一些一般情況下的有效分界符:Null (Chr$(0)),水平製表符 (Chr$(9)),換行 (Chr$(10)),垂直製表符 (Chr$(11)),換頁 (Chr$(12)) ,回車 (Chr$(13)),空白 (SBCS) (Chr$(32))。在 DBCS中,空白的實際值會隨國家/地區而不同。

說明

在把 ANSI 格式的 Byte 數組轉換爲字符串時,您應該使用 StrConv 函數。當您轉換 Unicode 格式的這種數組時,使用賦值語句。


StrReverse函數

描述

返回一個字符串,其中一個指定子字符串的字符順序是反向的。

語法

StrReverse(string1)

參數string1是一個字符串,它的字符順序要被反向。如果string1是一個長度爲零的字符串(""),則返回一個長度爲零的字符串。如果string1Null,則產生一個錯誤。


String 函數

返回 Variant (String),其中包含指定長度重複字符的字符串。

語法

String(number, character)

String 函數的語法有下面的命名參數:

部分 說明
number 必要參數;Long。返回的字符串長度。如果 number 包含 Null,將返回 Null
character 必要參數;Variant。爲指定字符的字符碼或字符串表達式,其第一個字符將用於建立返回的字符串。如果 character 包含 Null,就會返回 Null

說明

如果指定 character 的數值大於 255,String 會按下面的公式將其轉爲有效的字符碼:

character Mod 256


Switch 函數

計算一組表達式列表的值,然後返回與表達式列表中最先爲 True 的表達式所相關的 Variant 數值或表達式。

語法

Switch(expr-1, value-1[, expr-2, value-2 _ [, expr-n,value-n]])

Switch 函數的語法具有以下幾個部分:

部分 描述
expr 必要參數。要加以計算的 Variant 表達式。
value 必要參數。如果相關的表達式爲 True,則返回此部分的數值或表達式。

說明

Switch 函數的參數列表由多對錶達式和數值組成。表達式是由左至右加以計算的,而數值則會在第一個相關的表達式爲 True 時返回。如果其中有部分不成對,則會產生一個運行時錯誤。如果 expr-1TrueSwitch 返回 value-1,如果 expr-1False,但 expr-2True,則 Switch 返回 value-2,以此類推。

Switch 會返回一個 Null值,如果:

  • 沒有一個表達式爲 True

  • 第一個爲 True 的表達式,其相對應的值爲 Null

雖然它只返回其中的一個值,但是 Switch 會計算所有的表達式。因此應該注意到所產生的副作用。例如,只要其中一個表達式導致被零除錯誤,就會發生錯誤。


SYD 函數

返回一個 Double,指定某項資產在一指定期間用年數總計法計算的折舊。

語法

SYD(cost, salvage, life, period)

SYD 函數有下列命名參數:

部分 描述
cost 必要。Double 指定資產的初始成本。
salvage 必要。Double 指定資產在可用年限結束後的價值。
life 必要。Double 指定資產的可用年限。
period 必要。Double 指定計算資產折舊所用的那一期間。

說明

必須用相同的單位表示 lifeperiod 參數。例如,如果 life 用月份表示,則 period 也必須用月份表示。所有參數都必須是正數。


Tab 函數

Print # 語句或 Print 方法一起使用,對輸出進行定位。

 語法

Tab[(n)]

可選的 n 參數是在顯示或打印列表中的下一個表達式之前移動的列數。若省略此參數,則 Tab 將插入點移動到下一個打印區的起點。這就使 Tab 可用來替換國別中的逗號,此處,逗號是作爲十進制分隔符使用的。

說明

如果當前行上的打印位置大於 n,則 Tab 將打印位置移動到下一個輸出行的第 n 列上。如果 n 小於 1,則 Tab 將打印位置移動到列 1。如果 n 大於輸出行的寬度,則 Tab 函數使用以下公式計算下一個打印位置:

n Mod width

例如,如果 width 是 80,並指定 Tab(90),則下一個打印將從列 10 開始(90/80 的餘數)。如果 n 小於當前打印位置,則從下一行中計算出來的打印位置開始打印。如果計算後的打印位置大於當前打印位置,則從同一行中計算出來的打印位置開始打印。

輸出行最左端的打印位置總是 1。在使用 Print # 語句將數據寫入文件時,最右端的打印位置是輸出文件的當前寬度,這一寬度可用 Width # 語句設置。

注意 要確保表格列的寬度足以容納較寬的字符串。

Print 方法與 Tab 函數一起使用時,打印的外觀將會被分割爲均勻、定寬的列。各列的寬度等於選用字體內以磅數爲單位的所有字符的平均寬度。但是,在已打印字符的個數與那些字符所佔據的定寬列的數目之間不存在任何關係。例如,大寫字母 W 佔據超過一個定寬的列,而小寫字母 i 則佔據少於一個定寬的列。


Tan 函數

返回一個 Double 的值,指定一個角的正切值。

語法

Tan(number)

必要的 number 參數是 Double 或任何有效的數值表達式,表示一個以弧度爲單位的角度。

說明

Tan 取一角度爲參數值,並返回直角的兩條鄰邊的比值。該比值是角的對邊長度除以角的鄰邊長度的商。

爲了將角度轉換爲弧度,請將角度乘以 pi/180/180。爲了將弧度轉換爲角度,請將弧度乘以 180/pi。


Time 函數

返回一個指明當前系統時間的 Variant (Date)。

語法

Time

說明

爲了設置系統時間,請使用 Time 語句。


Timer 函數

返回一個 Single,代表從午夜開始到現在經過的秒數。

語法

Timer

說明

Microsoft Windows中,Timer函數返回一秒的小數部分。


TimeSerial 函數

返回一個 Variant (Date),包含具有具體時、分、秒的時間。

語法

TimeSerial(hour, minute, second)

TimeSerial 函數語法有下列的命名參數:

部分 描述
hour 必要;Variant (Integer)。其值從 0 (12:00 A.M.) 到 23 (11:00 P.M.),或一數值表達式。
minute 必要;Variant (Integer)。任何數值表達式。
second 必要;Variant (Integer)。任何數值表達式。

說明

爲了指定一個時刻,如 11:59:59,TimeSerial 的參數取值應在正常範圍內;也就是說,鐘點應介於 0-23 之間,而分鐘與秒應介於 0-59 之間。但是,當一個數值表達式表示某時刻之前或其後的時、分鐘或秒數時,也可以爲每個使用這個數值表達式的參數指定相對時間。以下示例中使用了表達式代替絕對時間數。TimeSerial 函數返回中午之前六小時 (12 - 6) 又十五分鐘 (-15) 的時間,即 5:45:00 A.M.

TimeSerial(12 - 6, -15, 0)

當任何一個參數的取值超出正常範圍時,它會適時進位到下一個較大的時間單位。例如,如果指定了 75(75 分鐘),則這個時間被解釋成一小時又十五分。如果一個參數值超出 -32,768 到 32,767 的範圍,就會導致錯誤發生。如果三個參數指定的時間會使日期超出可接受的日期範圍,則亦會導致錯誤發生。


TimeValue 函數

返回一個包含時間的 Variant (Date)。

語法

TimeValue(time)

必要的 time 參數,通常是一個字符串表達式,表示 0:00:00 (12:00:00 A.M.) 到 23:59:59 (11:59:59 P.M.) 之間的時刻。但是,time 也可以是表示在同一時間範圍取值的任何其它表達式。如果 time 包含 Null,則返回 Null

說明

可以使用 12 小時制或 24 小時制的時間格式。例如,”2:24PM”"14:24" 均是有效的 time 表達式。

如果 time 參數包含日期信息,TimeValue 將不會返回它。但是,若 time 包含無效的日期信息,則會導致錯誤發生。


類型轉換函數

每個函數都可以強制將一個表達式轉換成某種特定數據類型。

語法

CBool(expression)

CByte(expression)

CCur(expression)

CDate(expression)

CDbl(expression)

CDec(expression)

CInt(expression)

CLng(expression)

CSng(expression)

CStr(expression)

CVar(expression)

CStr(expression)

必要的 expression 參數可以是任何字符串表達式或數值表達式。

返回類型

函數名稱決定返回類型,如下所示:

函數 返回類型 expression 參數範圍
CBool Boolean 任何有效的字符串或數值表達式。
CByte Byte 0 至 255。
CCur Currency -922,337,203,685,477.5808 至922,337,203,685,477.5807。
CDate Date 任何有效的日期表達式。
CDbl Double 負數從 -1.79769313486232E308 至 -4.94065645841247E-324;正數從 4.94065645841247E-324 至 1.79769313486232E308。
CDec Decimal 零變比數值,即無小數位數值,爲
+/-79,228,162,514,264,337,593,543,950,335。對於 28 位小數的數值,範圍則爲
+/-7.9228162514264337593543950335;最小的可能非零值是 0.0000000000000000000000000001。
CInt Integer -32,768 至 32,767,小數部分四捨五入。
CLng Long -2,147,483,648 至 2,147,483,647,小數部分四捨五入。
CSng Single 負數爲 -3.402823E38 至 -1.401298E-45;正數爲 1.401298E-45 至 3.402823E38。
CStr String 依據 expression 參數返回 Cstr。
CVar Variant 若爲數值,則範圍與 Double 相同;若不爲數值,則範圍與 String 相同。

說明

如果傳遞給函數的 expression 超過轉換目標數據類型的範圍,將發生錯誤。

通常,在編碼時可以使用數據類型轉換函數,來體現某些操作的結果應該表示爲特定的數據類型,而不是缺省的數據類型。例如,當單精度、雙精度或整數運算髮生的情況下,使用 CCur 來強制執行貨幣運算。

應該使用數據類型轉換函數來代替 Val,以使國際版的數據轉換可以從一種數據類型轉換爲另一種。例如,當使用 Ccur 時,不同的小數點分隔符、千分位分隔符和各種貨幣選項,依據系統的國別設置都會被妥善識別。

當小數部分恰好爲 0.5 時,Cint CLng 函數會將它轉換爲最接近的偶數值。例如,0.5 轉換爲 0、1.5 轉換爲 2。Cint CLng 函數不同於 Fix Int 函數,Fix Int 函數會將小數部分截斷而不是四捨五入。並且 Fix Int 函數總是返回與傳入的數據類型相同的值。

使用 IsDate 函數,可判斷 date 是否可以被轉換爲日期或時間。Cdate 可用來識別日期文字和時間文字,以及落入可接受的日期範圍內的數值。當轉換一個數字成爲日期時,是將整數部分轉換爲日期,小數部分轉換爲從午夜起算的時間。

CDate 依據系統上的國別設置來決定日期的格式。如果提供的格式爲不可識別的日期設置,則不能正確判斷年、月、日的順序。另外,長日期格式,若包含有星期的字符串,也不能被識別。

CVDate 函數也提供對早期 Visual Basic 版本的兼容性。CVDate 函數的語法與 CDate 函數是完全相同的,不過,CVDate 是返回一個 Variant,它的子類型是 Date,而不是實際的 Date 類型。因爲現在已有真正的 Date 類型,所以 CVDate 也不再需要了。轉換一個表達式成爲 Date,再賦值給一個 Variant,也可以達到同樣的效果。也可以使用這種技巧將其他真正的數據類型轉換爲對等的 Variant 子類型。

注意 CDec 函數不能返回獨立的數據類型,而總是返回一個 Variant,它的值已經被轉換爲 Decimal 子類型。


TypeName 函數

返回一個 String,提供有關變量的信息。

語法

TypeName(varname)

必要的 varname 參數是一個 Variant,它包含用戶定義類型變量之外的任何變量。

說明

TypeName 所返回的字符串可以是下面列舉的任何一個字符串

返回字符串 變量
對象類型 類型爲 objecttype 的對象
Byte 位值
Integer 整數
Long 長整數
Single 單精度浮點數
Double 雙精度浮點數
Currency 貨幣
Decimal 十進制值
Date 日期
String 字符串
布爾 布爾值
Error 錯誤值
Empty 未初始化
Null 無效數據
Object 對象
Unknown 類型未知的對象
Nothing 不再引用對象的對象變量

如果 varname 是一個數組,則返回的字符串可以是任何一個後面添加了空括號的可能的返回字符串(或 Variant)。例如,如果 varname 是一個整數數組,則 TypeName 返回 "Integer()"。


UBound 函數

返回一個 Long 型數據,其值爲指定的數組維可用的最大下標。

語法

UBound(arrayname[, dimension])

UBound 函數的語法包含下面部分:

部分 描述
arrayname 必需的。數組變量的名稱,遵循標準變量命名約定。
dimension 可選的;Variant (Long)。指定返回哪一維的上界。1 表示第一維,2 表示第二維,以此類推。如果省略 dimension,就認爲是 1。

說明

UBound 函數與 LBound 函數一起使用,用來確定一個數組的大小。LBound 用來確定數組某一維的上界。

對具有下述維數的數組而言,UBound 的返回值見下表:

Dim A(1 To 100, 0 To 3, -3 To 4)
語句 返回值
UBound(A, 1) 100
UBound(A, 2) 3
UBound(A, 3) 4


UCase 函數

返回 Variant (String),其中包含轉成大寫的字符串。

語法

UCase(string)

必要的 string 參數爲任何有效的字符串表達式。如果 string 包含 Null,將返回 Null。

說明

只有小寫的字母會轉成大寫;原本大寫或非字母的字符保持不變


Val 函數

返回包含於字符串內的數字,字符串中是一個適當類型的數值。

語法

Val(string)

必要的 string 參數可以是任何有效的字符串表達式.

說明

Val 函數,在它不能識別爲數字的第一個字符上,停止讀入字符串。那些被認爲是數值的一部分的符號和字符,例如美圓號與逗號,都不能被識別。但是函數可以識別進位制符號 &O(八進制)和 &H(十六進制)。空白、製表符和換行符都從參數中被去掉。

下面的返回值爲 1615198:

Val("    1615 198th Street N.E.")

在下面的代碼中,Val 爲所示的十六進制數值返回十進制數值 -1。

Val("&HFFFF")

注意 Val 函數只會將句點(.)當成一個可用的小數點分隔符。當使用不同的小數點分隔符時,如在國際版應用程序中,代之以 CDbl 來把字符串轉換爲數字。


VarType 函數

返回一個 Integer,指出變量的子類型。

語法

VarType(varname)

必要的 varname 參數是一個 Variant,包含用戶定義類型變量之外的任何變量。

返回值

常數 描述
vbEmpty 0 Empty(未初始化)
vbNull 1 Null(無有效數據)
vbInteger 2 整數
vbLong 3 長整數
vbSingle 4 單精度浮點數
vbDouble 5 雙精度浮點數
vbCurrency 6 貨幣值
vbDate 7 日期
vbString 8 字符串
vbObject 9 對象
vbError 10 錯誤值
vbBoolean 11 布爾值
vbVariant 12 Variant(只與變體中的數組一起使用)
vbDataObject 13 數據訪問對象
vbDecimal 14 十進制值
vbByte 17 位值
vbUserDefinedType 36 包含用戶定義類型的變量
vbArray 8192 數組

注意 這些常數是由 Visual Basic 爲應用程序指定的。這些名稱可以在程序代碼中到處使用,以代替實際值。

說明

VarType 函數自身從不對 vbArray 返回值。VarType 總是要加上一些其他值來指出一個具體類型的數組。常數 vbVariant 只與 vbArray 一起返回,以表明 VarType 函數的參數是一個 Variant 類型的數組。例如,對一個整數數組的返回值是 vbInteger + vbArray,或 8194。如果一個對象有缺省屬性,則 VarType (object) 返回對象缺省屬性的類型。


Weekday 函數

返回一個 Variant (Integer),包含一個整數,代表某個日期是星期幾。

語法

Weekday(date, [firstdayofweek])

Weekday 函數語法有下列的命名參數:

部分 描述
date 必要。能夠表示日期的 Variant、數值表達式、字符串表達式或它們的組合。如果 date 包含 Null,則返回 Null
Firstdayofweek 可選。指定一星期第一天的常數。如果未予指定,則以 vbSunday 爲缺省值。

設置

firstdayofweek 參數有以下設定值:

常數 描述
vbUseSystem 0 使用 NLS API 設置。
VbSunday 1 星期日(缺省值)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六

返回值

Weekday 函數可以返回以下諸值:

常數 描述
vbSunday 1 星期日
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六


WeekdayName函數

描述

返回一個字符串,表示一星期中的某天。

語法

WeekdayName(weekday, abbreviate, firstdayofweek)

WeekdayName函數語法有如下幾部分:

部分 描述
weekday 必需的。數字值,表示一星期中的某天。該數字值要依賴於firstdayofweek設置中的設置值來決定。
abbreviate 可選的。Boolean值,表示星期的名稱是否被縮寫。如果忽略該值,缺省值爲False,表明星期的名稱不能被縮寫。
firstdayofweek 可選的。數字值,表示一星期中第一天。關於其值,請參閱“設置值”部分。

設置值

firstdayofweek參數值如下:

常數 描述
vbUseSystem 0 使用本國語言支持 (NLS) API設置值。
vbSunday 1 星期日(缺省)。
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六


Year 函數

返回 Variant (Integer),包含表示年份的整數。

語法

Year(date)

必要的 date 參數,可以是任何能夠表示日期的 Variant、數值表達式、字符串表達式或它們的組合。如果 date 包含 Null,則返回 Null


算術運算符

^ 運算符

* 運算符

/ 運算符

/ 運算符

Mod 運算符

+ 運算符

- 運算符


連接運算符

& 運算符

+ 運算符


轉換函數

Asc 函數

CBool 函數

CByte 函數

CCur 函數

CDate 函數

CDec 函數

CDbl 函數

Chr 函數

CInt 函數

CLng 函數

CSng 函數

CStr 函數

CVar 函數

CVErr 函數

Format 函數

Hex 函數

Oct 函數

Str 函數

Val 函數


數據類型概述

以下表格顯示所支持的數據類型,以及存儲空間大小與範圍。

數據類型 存儲空間大小 範圍
Byte 1 個字節 0 到 255
Boolean 2 個字節 TrueFalse
Integer 2 個字節 -32,768 到 32,767
Long
(長整型)
4 個字節 -2,147,483,648 到 2,147,483,647
Single
(單精度浮點型)
4 個字節 負數時從 -3.402823E38 到 -1.401298E-45;正數時從 1.401298E-45 到 3.402823E38
Double
(雙精度浮點型)
8 個字節 負數時從 -1.79769313486232E308 到
-4.94065645841247E-324;正數時從4.94065645841247E-324 到 1.79769313486232E308
Currency
(變比整型)
8 個字節 從 -922,337,203,685,477.5808 到 922,337,203,685,477.5807
Decimal 14 個字節 沒有小數點時爲 +/-79,228,162,514,264,337,593,543,950,335,而小數點右邊有 28 位數時爲 +/-7.9228162514264337593543950335;最小的非零值爲 +/-0.0000000000000000000000000001
Date 8 個字節 100 年 1 月 1 日 到 9999 年 12 月 31 日
Object 4 個字節 任何 Object 引用
String
(變長)
10 字節加字符串長度 0 到大約 20 億
String
(定長)
字符串長度 1 到大約 65,400
Variant
(數字)
16 個字節 任何數字值,最大可達 Double 的範圍
Variant
(字符)
22 個字節加字符串長度 與變長 String 有相同的範圍
用戶自定義
(利用 Type
所有元素所需數目 每個元素的範圍與它本身的數據類型的範圍相同。

注意 任何數據類型的數組都需要 20 個字節的內存空間,加上每一數組維數佔 4 個字節,再加上數據本身所佔用的空間。數據所佔用的內存空間可以用數據元數目乘上每個元素的大小加以計算。例如,以 4 個 2 字節之 Integer 數據元所組成的一維數組中的數據,佔 8 個字節。這 8 個字節加上額外的 24 個字節,使得這個數組所需總內存空間爲 32 個字節。

包含一數組的 Variant 比單獨的一個數組需要多 12 個字節。


導出的數學函數

以下爲非基本數學函數的列表,皆可由基本數學函數導出:

函數 由基本函數導出之公式
Secant(正割) Sec(X) = 1 / Cos(X)
Cosecant(餘割) Cosec(X) = 1 / Sin(X)
Cotangent(餘切) Cotan(X) = 1 / Tan(X)
Inverse Sine(反正弦) Arcsin(X) = Atn(X / Sqr(-X * X + 1))
Inverse Cosine(反餘弦) Arccos(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
Inverse Secant(反正割) Arcsec(X) = Atn(X / Sqr(X * X - 1)) + Sgn((X) - 1) * (2 * Atn(1))
Inverse Cosecant(反餘割) Arccosec(X) = Atn(X / Sqr(X * X - 1)) + (Sgn(X) - 1) * (2 * Atn(1))
Inverse Cotangent(反餘切) Arccotan(X) = Atn(X) + 2 * Atn(1)
Hyperbolic Sine(雙曲正弦) HSin(X) = (Exp(X) - Exp(-X)) / 2
Hyperbolic Cosine(雙曲餘弦) HCos(X) = (Exp(X) + Exp(-X)) / 2
Hyperbolic Tangent(雙曲正切) HTan(X) = (Exp(X) - Exp(-X)) / (Exp(X) + Exp(-X))
Hyperbolic Secant(雙曲正割) HSec(X) = 2 / (Exp(X) + Exp(-X))
Hyperbolic Cosecant(雙曲餘割) HCosec(X) = 2 / (Exp(X) - Exp(-X))
Hyperbolic Cotangent(雙曲餘切) HCotan(X) = (Exp(X) + Exp(-X)) / (Exp(X) - Exp(-X))
Inverse Hyperbolic Sine(反雙曲正弦) HArcsin(X) = Log(X + Sqr(X * X + 1))
Inverse Hyperbolic Cosine(反雙曲餘弦) HArccos(X) = Log(X + Sqr(X * X - 1))
Inverse Hyperbolic Tangent(反雙曲正切) HArctan(X) = Log((1 + X) / (1 - X)) / 2
Inverse Hyperbolic Secant(反雙曲正割) HArcsec(X) = Log((Sqr(-X * X + 1) + 1) / X)
Inverse Hyperbolic Cosecant(反雙曲餘割) HArccosec(X) = Log((Sgn(X) * Sqr(X * X + 1) + 1) / X)
Inverse Hyperbolic Cotangent(反雙曲餘切) HArccotan(X) = Log((X + 1) / (X - 1)) / 2
以 N 爲底的對數 LogN(X) = Log(X) / Log(N)


邏輯運算符

And 運算符

Eqv 運算符

Imp 運算符

Not 運算符

Or 運算符

Xor 運算符


數學函數

Abs 函數

Atn 函數

Cos 函數

Exp 函數

Fix 函數

Int 函數

Log 函數

Rnd 函數

Sgn 函數

Sin 函數

Sqr 函數

Tan 函數

導出的數學函數


運算符優先順序

在一個表達式中進行若干操作時,每一部分都會按預先確定的順序進行計算求解,稱這個順序爲運算符的優先順序。

在表達式中,當運算符不止一種時,要先處理算術運算符,接着處理比較運算符,然後再處理邏輯運算符。所有比較運算符的優先順序都相同;也就是說,要按它們出現的順序從左到右進行處理。而算術運算符和邏輯運算符則必須按下列優先順序進行處理:

算術 比較 邏輯
指數運算 (^) 相等 (=) Not
負數 (-) 不等 (<>) And
乘法和除法 (*/) 小於 (<) Or
整數除法 (/) 大於 (>) Xor
求模運算 (Mod) 小於或相等 (<=) Eqv
加法和減法 (+-) 大於或相等 (>=) Imp
字符串連接 (&) Like Is

當乘法和除法同時出現在表達式中時,每個運算都按照它們從左到右出現的順序進行計算。當乘法和除法同時出現在表達式中時,每個運算也都按照它們從左到右出現的順序進行計算。可以用括號改變優先順序,強令表達式的某些部分優先運行。括號內的運算總是優先於括號外的運算。但是,在括號之內,運算符的優先順序不變。

字符串連接運算符 (&) 不是算術運算符,但是,就其優先順序而言,它在所有算術運算符之後,而在所有比較運算符之前。

Like 的優先順序與所有比較運算符都相同,實際上是模式匹配運算符。

Is 運算符是對象引用的比較運算符。它並不將對象或對象的值進行比較,而只確定兩個對象引用是否參照了相同的對象。


運算符摘要

運算符 描述
算術運算符 用來進行數學計算的運算符。
比較運算符 用來進行比較的運算符。
連接運算符 用來合併字符串的運算符。
邏輯運算符 用來執行邏輯運算的運算符。

數組關鍵字總結

作用 關鍵字
確認一個數組。 IsArray
建立一個數組。 Array
改變缺省最小值。 Option Base
聲明及初始化數組。 Dim, Private, Public, ReDim, Static
判斷數組下標極限值。 LBound, UBound
重新初始化一個數組。 Erase, ReDim

Collection 對象關鍵字總結

作用 關鍵字
確認一個數組。 IsArray
建立一個數組。 Array
改變缺省最小值。 Option Base
聲明及初始化數組。 Dim, Private, Public, ReDim, Static
判斷數組下標極限值。 LBound, UBound
重新初始化一個數組。 Erase, ReDim

編譯命令關鍵字總結

作用 關鍵字
定義編譯常數。 #Const
編譯程序碼中的選擇區塊。 #If...Then...#Else

控制流關鍵字總結

作用 關鍵字
分支。 GoSub...Return, GoTo, On Error, On...GoSub, On...GoTo
退出或暫停程序。 DoEvents, End, Exit, Stop
循環。 Do...Loop For...Next, For Each...Next, While...Wend, With
判斷。 Choose, If...Then...Else, Select Case, Switch
使用過程。 Call, Function, Property Get, Property Let, Property Set, Sub

變換關鍵字總結

作用 關鍵字
ANSI 值變換爲字符串。 Chr
大小寫變換。 Format, LCase, UCase
日期變換爲數字串。 DateSerial, DateValue
數字進制變換。 Hex, Oct
數值變換爲字符串。 Format, Str
數據類型變換。 CBool, CByte, CCur, CDate, CDbl, CDec, CInt, CLng, CSng, CStr, CVar, CVErr, Fix, Int
日期變換。 Day, Month, Weekday, Year
時間變換。 Hour, Minute, Second
字符串變換爲 ASCII 值。 Asc
字符串變換爲數值。 Val
時間變換爲數字串。 TimeSerial, TimeValue

數據類型關鍵字總結

作用 關鍵字
數據類型變換。 CBool, CByte, CCur, CDate, CDbl, CDec, CInt, CLng, CSng, CStr, CVar, CVErr, Fix, Int
設置數據類型。 Boolean, Byte, Currency, Date, Double, Integer, Long, Obect, Single, String, Variant (default)
檢查數據類型。 IsArray, IsDate, IsEmpty, IsError, IsMissing, IsNull, IsNumeric, IsObject

日期與時間關鍵字總結

作用 關鍵字
設置當前日期或時間。 Date ,Now, Time
計算日期。 DateAdd, DateDiff, DatePart
返回日期。 DateSerial, DateValue
返回時間。 TimeSerial, TimeValue
設置日期或時間。 Date, Time
計時。 Timer

目錄和文件關鍵字總結

作用 關鍵字
改變目錄或文件夾。 ChDir
改變磁盤。 ChDrive
複製文件。 FileCopy
新建目錄或文件夾。 MkDir
刪除目錄或文件夾。 RmDir
重新命名文件、目錄或文件夾。 Name
返回當前路徑。 CurDir
返回文件的日期、時間。 FileDateTime
返回文件、目錄及標籤屬性。 GetAttr
返回文件長度。 FileLen
返回文件名或磁盤標籤。 Dir
設置有關文件屬性的信息。 SetAttr

錯誤關鍵字總結

作用 關鍵字
產生運行時錯誤。 Clear, Error, Raise
取得錯誤信息。 Error
提供錯誤信息。 Err
返回 Error 變體。 CVErr
運行時的錯誤處理。 On Error, Resume
類型確認。 IsError

金融關鍵字總結

作用 關鍵字
計算折舊率。 DDB, SLN, SYD
計算未來值。 FV
計算利率。 Rate
計算本質利率。 IRR, MIRR
計算期數。 NPer
計算支付。 IPmt, Pmt, PPmt
計算當前淨值。 NPV, PV

輸入與輸出關鍵字總結

作用 關鍵字
計算折舊率。 DDB, SLN, SYD
計算未來值。 FV
計算利率。 Rate
計算本質利率。 IRR, MIRR
計算期數。 NPer
計算支付。 IPmt, Pmt, PPmt
計算當前淨值。 NPV, PV

關鍵字分類

分類 描述
數組 建立、定義與使用數組。
編譯命令 控制編譯方式。
控制流 循環及過程流程控制。
變換 變換數值及數據類型。
數據類型 數據類型與 variant 子型態。
日期與時間 變換、使用日期與時間表達式。
目錄和文件 控制文件系統與處理文件。
錯誤 偵測與返回錯誤值。
金融 進行各種金融運算。
輸入與輸出 接受輸入與顯示、打印輸出。
數學 完成各種數學運算。
其他 激活其他應用程序與處理事件。
操作符 比較表達式與完成其它操作。
字符串處理 處理字符串及字符串數據類型。
變量與常數 聲明、定義變量與常數。

數學關鍵字總結

作用 關鍵字
三角函數。 Atn, Cos, Sin, Tan
一般計算。 Exp, Log, Sqr
產生隨機數。 Randomize, Rnd
取得絕對值。 Abs
取得表達式的正負號。 Sgn
數值變換。 Fix, Int

其他關鍵字總結

作用 關鍵字
處理擱置事件。 DoEvents
運行其他程序。 AppActivate, Shell
發送按鍵信息給其他應用程序。 SendKeys
發出警告聲。 Beep
系統。 Environ
提供命令行字符串。 Command
Macintosh。 MacID, MacScript
自動。 CreateObject, GetObject
色彩。 QBColor, RGB

運算符關鍵字總結

作用 關鍵字
處理擱置事件。 DoEvents
運行其他程序。 AppActivate, Shell
發送按鍵信息給其他應用程序。 SendKeys
發出警告聲。 Beep
系統。 Environ
提供命令行字符串。 Command
Macintosh。 MacID, MacScript
自動。 CreateObject, GetObject
色彩。 QBColor, RGB

註冊關鍵字總結

作用 關鍵字
處理擱置事件。 DoEvents
運行其他程序。 AppActivate, Shell
發送按鍵信息給其他應用程序。 SendKeys
發出警告聲。 Beep
系統。 Environ
提供命令行字符串。 Command
Macintosh。 MacID, MacScript
自動。 CreateObject, GetObject
色彩。 QBColor, RGB

字符串處理關鍵字總結

作用 關鍵字
比較兩個字符串。 StrComp
變換字符串。 StrConv
大小寫變換。 Format, LCase, UCase
建立重複字符的字符串。 Space, String
計算字符串長度。 Len
設置字符串格式。 Format
重排字符串。 LSet, RSet
處理字符串。 InStr, Left, LTrim, Mid, Right, RTrim, Trim
設置字符串比較規則。 Option Compare
運用 ASCII 與 ANSI 值。 Asc, Chr

變量與常數關鍵字總結

作用 關鍵字
指定值。 Let
聲明變量或常數。 Const, Dim, Private, Public, New, Static
聲明模塊爲私有。 Option Private Module
判斷 Variant。 IsArray, IsDate, IsEmpty, IsError, IsMissing, IsNull, IsNumeric, IsObject, TypeName, VarType
引用當前對象。 Me
變量須明確聲明。 Option Explicit
設置缺省數據類型。 Deftype


As

As 關鍵字用於下列語句:

Const 語句

Declare 語句

Dim 語句

Function 語句

Name 語句

Open 語句

Private 語句

Property Get 語句

Property Let 語句

Property Set 語句

Public 語句

ReDim 語句

Static 語句

Sub 語句

Type 語句


Binary

Binary 關鍵字用於下列語句:

Open 語句

Option Compare 語句


ByRef

ByRef 關鍵字用於下列語句:

Call 語句

Declare 語句

Function 語句

Property Get 語句

Property Let 語句

Property Set 語句

Sub 語句


ByVal

ByVal 關鍵字用於下列語句:

Call 語句

Declare 語句

Function 語句

Property Get 語句

Property Let 語句

Property Set 語句

Sub 語句


Date

Date 關鍵字用於下列上下文:

Date 數據類型

Date 函數

Date 語句


Else

Else 關鍵字用於下列語句:

If...Then...Else 語句

Select Case 語句


Empty

Empty 關鍵字是用作 Variant 子類型。它表示未初始化的變量值。

Error

Error 關鍵字用於下列上下文:

Error 函數

Error 語句

On Error 語句


False

False 關鍵字的值等於 0。

For

For 關鍵字用於下列上下文:

For...Next 語句

For Each...Next 語句

Open 語句


Friend

修改窗體模塊或者類模塊中的一個過程的定義,使得該過程可以被類外的模塊調用,但必須是在定義該類的工程的部分內。Friend 過程在標準的模塊中是不能使用的。

語法

[Private | Friend | Public] [Static] [Sub | Function | Property] procedurename

必需的 procedurename 是所要設定爲在整個工程中都是可見的過程的名稱,但是該過程對於類的控制器卻是不可見的。

說明

類中的 Public 過程在任何地方都可以調用,即使是被該類實例的控制器所調用也可以。聲明一個過程爲 Private 就阻止了該對象的控制器對於該過程的調用,但是同時也阻止了定義該類的工程內部對該過程的調用。Friend 使得該過程在整個工程中都是可見的,但是對於一個對象實例的控制器卻是不可見的。Friend 只能出現在窗體模塊和類模塊中,並且只能修改過程的名稱,不能修改變量或者類型。一個類中的過程可以訪問某個工程所有其它類的 Friend 過程。Friend 過程不會出現在類的類型庫中。一個 Friend 過程不能被後期綁定。


Get

Get 關鍵字用於下列上下文:

Get 語句

Property Get 語句


Input

Input 關鍵字用於下列上下文:

Input 函數

Input # 語句

Line Input # 語句

Open 語句


Is

Is 關鍵字用於下列上下文:

If...Then...Else 語句

Is 運算子

Select Case 語句


Len

Len 關鍵字用於下列上下文:

Len 函數

Open 語句


Let

Let 關鍵字用於下列上下文:

Let 語句

Property Let 語句


Lock

Lock 關鍵字用於下列上下文:

Lock、Unlock 語句s

Open 語句


Me

Me 關鍵字像是隱含聲明的變量。這個關鍵字適用於類模塊中的每個過程。當類有多個實例時,Me 在代碼正在執行的地方提供引用具體實例的方法。要把當前執行類實例的有關信息傳遞到另一個模塊的過程,Me 非常有用。例如,假定模塊中有以下過程:

Sub ChangeFormColor(FormName As Form)
   FormName.BackColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256)
End Sub

可以調用這個過程並使用下列語句將窗體類的當前實例作爲參數傳遞。

ChangeFormColor Me

Mid

Mid 關鍵字用於下列上下文:

Mid 函數

Mid 語句


New

New 關鍵字用於下列上下文:

Dim 語句

Private 語句

Public 語句

Set 語句

Static 語句


Next

Next 關鍵字用於下列上下文:

For...Next 語句

For Each...Next 語句

On Error 語句

Resume 語句


Nothing

使用 Nothing 關鍵字被將對象變量從實際對象中分離開來。要使用 Set 語句將 Nothing 賦值給對象變量。例如:

Set MyObject = Nothing

幾個對象變量可以引用同一個實際對象。當 Nothing 被賦值給一個對象變量時,該變量不再引用任何實際對象。當幾個對象變量引用同一個對象時,只有將全部對象變量都設置成 Nothing 之後,與被引用的對象有關聯的內存資源及系統資源纔會被釋放掉,在這裏,或者明確使用 Set,或者在最後一個設置成 Nothing 的對象變量超出範圍後隱含地使用 Set


Null

Null 關鍵字被用來作爲 Variant 子類型。它說明變量不包含有效數據。

On

On 關鍵字用於下列上下文:

On Error 語句

On...GoSub 語句

On...GoTo 語句


Option

Option 關鍵字用於下列上下文:

Option Base 語句

Option Compare 語句

Option Explicit 語句

Option Private 語句


Optional

Optional 關鍵字用於下列上下文:

Declare 語句

Function 語句

Property Get 語句

Property Let 語句

Property Set 語句

Sub 語句


ParamArray

ParamArray 關鍵字用於下列上下文:

Declare 語句

Function 語句

Sub 語句


Print

Print 關鍵字用於下列上下文:

Print 方法

Print # 語句


Private

Private 關鍵字用於下列上下文:

Const 語句

Declare 語句

Enum 語句

Function 語句

Option Private 語句

Private 語句

Property Get 語句

Property Let 語句

Property Set 語句

Sub 語句

Type 語句


Property

Property 關鍵字用於下列上下文:

Property Get 語句

Property Let 語句

Property Set 語句


Public

Public 關鍵字用於下列上下文:

Const 語句

Declare 語句

Enum 語句

Event 語句

Function 語句

Property Get 語句

Property Let 語句

Property Set 語句

Public 語句

Sub 語句

Type 語句


Resume

Resume 關鍵字用於下列上下文:

On Error 語句

Resume 語句


Seek

Seek 關鍵字用於下列上下文:

Seek 函數

Seek 語句


Set

Set 關鍵字用於下列上下文:

Set 語句

Property Set 語句


Static

Static 關鍵字用於下列上下文:

Function 語句

Property Get 語句

Property Let 語句

Property Set 語句

Static 語句

Sub 語句


Step

Step 關鍵字用於下列上下文:

For...Next 語句

For Each...Next 語句


String

String 關鍵字用於下列上下文:

String 數據類型

String 函數


Then

Then 關鍵字用於下列上下文:

#If...Then...#Else 命令

If...Then...Else 語句


Time

Time 關鍵字用於下列上下文:

Time 函數

Time 語句


To

To 關鍵字用於下列上下文:

Dim 語句

For...Next 語句

Lock、Unlock 語句s

Private 語句

Public 語句

ReDim 語句

Select Case 語句

Static 語句

Type 語句


True

True 關鍵字的值等於 -1。


WithEvents

WithEvents 關鍵字用於下列上下文:

Dim 語句

Private 語句

Public 語句


Add 方法

添加一個成員到 Collection 對象。

語法

object.Add item, key, before, after

Add 方法的語法具有下列對象限定符和命名參數:

部分 描述
object 必需的。對象表達式,其值爲“應用於”列表中的對象。
item 必需的。任意類型的表達式,指定要添加到集合中的成員。
key 可選的。唯一字符串表達式,指定可以使用的鍵字符串,代替位置索引來訪問集合中的成員。
before 可選的。表達式,指定集合中的相對位置。在集合中將添加的成員放置在 before 參數識別的成員之前。如果爲一數值表達式,則 before 必須是介於 1 和集合 Count 屬性值之間的值。如果爲一字符串表達式,則當添加一個被引用的成員到集合時,before 必須對應於指定的 key 值。可以指定 before 位置或 after 位置,但不能同時指定這兩個位置。
after 可選。表達式,指定集合中的相對位置。在集合中將添加的成員放置在 After 參數識別的成員之後。如果爲一數值表達式,則 after 必須是介於 1 和集合 Count 屬性值之間的值;如果爲一字符串表達式,則當添加一個被引用的成員到集合時,after 必須對應於指定的 key 值。可以指定 before 位置或 after 位置,但不能同時指定這兩個位置。

說明

before after 參數是字符串表達式或數值表達式,均須引用集合中現有成員,否則將導致錯誤發生。

如果指定的 key 和集合中現有成員的 key 發生重複,則也會導致錯誤發生。


Add方法(Dictionary)

描述

添加一對相對應的關鍵字和條目到 Dictionary 對象。

語法

object.Add key, item

Add方法的語法有如下幾部分:

部分 描述
Object 必需的。一個 Dictionary 對象的名字。
Key 必需的。與所添加的條目相關聯的關鍵字。
Item 必需的。與所添加的關鍵字相關聯的條目。

說明

如果該關鍵字已經存在,則產生一個錯誤。


Add 方法(Folder)

描述

添加一個新的 Folder Folders 集合。

語法

object.AddFolders folderName

AddFolders 方法的語法有如下幾部分:

部分 描述
Object 必需的。一個Folders集合的名稱。
FolderName 必需的。新添加的Folder的名稱。

說明

如果 folderName 已經存在,則產生一個錯誤。


Assert 方法

有條件地在該方法出現的行上掛起執行。

語法

object.Assert booleanexpression

 Assert 方法的語法有如下的對象限定符和參數:

部分 描述
object 必需的。總是 Debug 對象。
booleanexpression 必需的。一個值爲 True 或者 False 的表達式。

說明

Assert 調用只在開發環境中工作。當模塊被編譯成爲一個可執行的文件時,調用 Debug 對象的方法就會被忽略。

全部 booleanexpression 常常被計算。例如,即使一個 And 表達式的第一部分被計算爲 False,整個表達式還要被計算。


BuildPath 方法

描述

追加一個名字到一個已經存在的路徑。

語法

object.BuildPath(path, name)

BuildPath 方法語法有如下幾部分:

部分 描述
object 必需的。始終是 FileSystemObject 的名字。
path 必需的。要對其追加名字的已存在路徑。路徑可以是絕對的也可以是相對的,不必指定一個已存在的文件夾。
name 必需的。要追加到已存在路徑上的名字。

說明

只有在需要時,BuildPath 方法纔在已存在路徑和名字之間插入一個附加的路徑分隔符。


Clear 方法

清除 Err 對象的所有屬性設置。

語法

object.Clear

objec 總是 Err 對象。

說明

在處理錯誤之後使用 Clear 來清除 Err 對象,例如,在對 On Error Resume Next 使用拖延錯誤處理時就可使用 Clear。每當執行下列語句時就會自動調用 Clear 方法:

  • 任意類型的 Resume 語句。

  • Exit Sub, Exit Function, Exit Property

  • 任何 On Error 語句。

注意 當處理因訪問其他對象產生的錯誤時,與其使用 On Error GoTo,不如使用 On Error Resume Next。每一次與對象打交道之後都檢查 Err,則可消除代碼訪問對象時的含混之處。可以確認是哪個對象將錯誤引入 Err.Number 中,也可以確認最初是哪個對象產生了這個錯誤(Err.Source 中指定的對象)。


Close 方法

描述

關閉一個打開的 TextStream 文件。

語法

object.Close

object始終是一個 TextStream 對象的名字。


Copy 方法

描述

把一個指定的文件或文件夾從一個地方複製到另一個地方。

語法

object.Copy destination[, overwrite]

Copy 方法語法有如下幾部分:

部分 描述
object 必需的。始終是一個 File Folder 對象的名字。
destination 必需的。文件或文件夾要複製到的接受端。不允許有通配符。
overwrite 可選的。Boolean 值,如果該值爲 True (缺省),則已存在的文件或文件夾將被覆蓋。如果爲 False,則它們不被覆蓋。

說明

對一個 File FolderCopy 方法的結果和執行 FileSystemObject.CopyFile FileSystemObject.CopyFolder 操作的結果是一樣的,在後者中, object所引用的文件或文件夾是作爲參數傳遞的。應當注意,後面的方法能夠複製多個文件或文件夾。


CopyFile 方法

描述

把一個或多個文件從一個地方複製到另一個地方。

語法

object.CopyFile source, destination[, overwrite]

CopyFile 方法語法有如下幾部分:

部分 描述
object 必需的。object始終是一個 FileSystemObject 的名字。
source 必需的。指明一個或多個要被複制文件的字符串文件說明,它可以包括通配符。
destination 必需的。指明 source 中的一個或多個文件要被複制到的接受端的字符串,不允許有通配符。
overwrite 選項的。Boolean 值,它表示存在的文件是否被覆蓋。如果是 True,文件將被覆蓋;如果是 False,它們不被覆蓋。缺省值是 True。注意如果 destination 具有隻讀屬性設置,不論 overwrite 值如何,CopyFile 都將失敗。

說明

通配符只能用在 source 參數的最後一個路徑部件。例如,你可以在下面請況使用通配符:

FileSystemObject.CopyFile "c:/mydocuments/letters/*.doc", "c:/tempfolder/"

但下面情況不能使用:

FileSystemObject.CopyFile "c:/mydocuments/*/R1???97.xls", "c:/tempfolder"

如果 source 包含通配符或 destination 以路徑分隔符(/)爲結尾,則認爲 destination 是一個已存在文件夾,在其中複製相匹配的文件。否則認爲 destination 是一個要創建文件的名字。不論是那種情況,當複製一個文件時,可能發生三種事件。

  • 如果 destination 不存在,source 得到複製。這是通常的情況。

  • 如果 destination 是一個已存在的文件,則當 overwrite 值爲 False 時發生一個錯誤,否則,source的複製文件將試圖覆蓋已存在文件。

  • 如果 destination 是一個目錄,發生一個錯誤。

如果使用通配符的 source 不能和任何文件匹配,同樣產生一個錯誤。CopyFile 方法停止在它遇到的第一個錯誤上。不要試圖回捲或撤消錯誤發生前所做的任何改變。


CopyFolder 方法

描述

從一個地方遞歸地複製一個文件夾到另一個地方。

語法

object.CopyFolder source, destination[, overwrite]

CopyFolder 方法語法有如下幾部分:

部分 描述
Object 必需的。始終爲一個 FileSystemObject 的名字。
source 必需的。指明一個或多個被複制文件夾的字符串文件夾說明,可以包括通配符。
destination 必需的。指明 source 中被複制文件夾和子文件夾的接受端的字符串,不允許有通配符。
overwrite 選項的。Boolean 值,它表示已存在的文件夾是否被覆蓋。如果爲 True,文件被覆蓋。如果爲 False,文件不被覆蓋。缺省值爲 True

說明

通配符僅可用於 source 參數的最後一個路徑部件。例如你可以在下面情況使用它:

FileSystemObject.CopyFolder "c:/mydocuments/letters/*", "c:/tempfolder/"

但不能在下面情況使用它:

FileSystemObject.CopyFolder "c:/mydocuments/*/*", "c:/tempfolder/"

如果 source 包含通配符或 destination 以路徑分隔符(/)爲結尾,則認爲 destination 是一個已存在的文件夾,在其中複製相匹配的文件夾和子文件夾。否則認爲 destination 是一個要創建的文件夾的名字。不論何種情況,當複製一個文件夾時,可能發生四種事件。

  • 如果 destination 不存在,source 文件夾和它所有的內容得到複製。這是通常的情況。

  • 如果 destination 是一個已存在的文件,則發生一個錯誤。

  • 如果 destination 是一個目錄,它將嘗試複製文件夾和它所有的內容。如果一個包含在 source 的文件已在 destination 中存在,當 overwrite False 時發生一個錯誤,否則它將嘗試覆蓋這個文件。

  • 如果 destination 是一個只讀目錄,當嘗試去複製一個已存在的只讀文件到此目錄並且 overwriteFalse 時,則發生一個錯誤。

如果 source 使用的通配符不能和任何文件夾匹配,也發生一個錯誤。

CopyFolder 方法停止在它遇到的第一個錯誤上。不要嘗試回捲錯誤發生前所做的任何改變。


CreateFolder 方法

描述

創建一個文件夾。

語法

object.CreateFolder(foldername)

CreateFolder 方法有如下幾部分:

部分 描述
object 必需的。始終是一個 FileSystemObject 的名字。
foldername 必需的。字符串表達式,它標識創建的文件夾。

說明

如果指定的文件夾已經存在,則發生一個錯誤。


CreateTextFile 方法

描述

創建一個指定的文件名並且返回一個用於該文件讀寫的 TextStream 對象。

語法

object.CreateTextFile(filename[, overwrite[, unicode]])

CreateTextFile 方法有如下幾部分:

部分 描述
object 必需的。始終是一個 FileSystemObject Folder 對象的名字。
filename 必需的。字符串表達式,它標識創建的文件。
overwrite 可選的。Boolean 值,表示一個已存在文件是否可被覆蓋。如果可被覆蓋其值爲 True,其值爲 False 時不能覆蓋。如果它被省略,則已存在文件不能覆蓋。
unicode 可選的。Boolean 值,表示文件是作爲一個 Unicode 文件創建的還是作爲一個ASCII 文件創建的。如果作爲一個 Unicode 文件創建,其值爲 True,作爲一個 ASCII 文件創建,其值爲 False。如果省略的話,則認爲是一個 ASCII 文件。

說明

下面的代碼舉例說明如何使用 CreateTextFile 方法創建和打開文本文件。

Sub CreateAfile
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set a = fs.CreateTextFile("c:/testfile.txt", True)
    a.WriteLine("This is a test.")
    a.Close
End Sub

對於一個已經存在的 filename,如果 overwrite 參數是 False 或者沒有提供,則發生一個錯誤。


Delete 方法

描述

刪除一個指定的文件或文件夾。

語法

object.Delete force

Delete 方法語法有如下幾部分:

部分 描述
object 必需的。始終是一個 File Folder 對象的名字。
force 可選的。Boolean 值,如果要刪除具有隻讀屬性設置的文件或文件夾,其值爲True。當其值爲 False 時(缺省),不能刪除具有隻讀屬性設置的文件或文件夾。

說明

如果指定的文件或文件夾不存在,則發生一個錯誤。

對於一個 File FolderDelete 方法的結果和 執行 FileSystemObject.DeleteFile FileSystemObject.DeleteFolder 操作的結果是一樣的。

Delete 方法對於文件夾內是否有內容不做區別。不管指定的文件夾是否有內容,它都被刪除。


DeleteFile 方法

描述

刪除一個指定的文件。

語法

object.DeleteFile filespec[, force]

DeleteFile 方法語法有如下幾部分:

部分 描述
object 必需的。始終是一個 FileSystemObject 的名字。
filespec 必需的。要刪除文件的名字。Filespec 可以在最後的路徑部件中包含通配符。
force 可選的。Boolean 值,如果要刪除具有隻讀屬性設置的文件,其值爲 True。如果其值爲 False (缺省),則不能刪除具有隻讀屬性設置的文件。

說明

如果沒有發現相匹配的文件,則產生一個錯誤。DeleteFile 方法停在它遇到的第一個錯誤上。不要嘗試回捲或撤消錯誤發生前所做的任何改變。


DeleteFolder 方法

描述

刪除一個指定的文件夾和它的內容。

語法

object.DeleteFolder folderspec[, force]

DeleteFolder 方法語法有如下幾部分:

部分 描述
object 必需的。始終是一個 FileSystemObject 的名字。
folderspec 必需的。要刪除的文件夾的名字。 Folderspec 可以在最後的路徑部件中包含通配符。
force 可選的。Boolean 值,如果要刪除具有隻讀屬性設置的文件夾,其值爲 True,如果值爲 False (缺省),則不能刪除具有隻讀屬性設置的文件夾。

說明

DeleteFolder方法對文件夾中有無內容不做區別。不管指定的文件夾中是否有內容,它都被刪除。

如果沒有發現相匹配的文件夾,則發生一個錯誤。DeleteFolder 方法停止在它遇到的第一個錯誤上,不要嘗試回捲或撤消錯誤發生前所做的任何改變。


DriveExists 方法

描述

如果指定的驅動器存在,返回 True,如果不存在返回 False

語法

object.DriveExists(drivespec)

DriveExists 方法語法有如下幾部分:

部分 描述
Object 必需的。始終是一個 FileSystemObject 的名字。
Drivespec 必需的。一個驅動器字符或一個完整的路徑說明。

說明

對於可刪除介質的驅動器,即使沒有介質存在, DriveExists 方法也返回 True。使用 Drive 對象的 IsReady 屬性確定驅動器是否準備好。


Exists 方法

描述

如果在 Dictionary 對象中指定的關鍵字存在,返回 True,若不存在,返回 False

語法

object.Exists(key)

Exists 方法語法有如下幾部分:

部分 描述
Object 必需的。始終是一個 Dictionary 對象的名字。
Key 必需的。在 Dictionary 對象中搜索的 Key 值。

FileExists 方法

描述

如果指定的文件存在,返回 True,若不存在,則返回 False

語法

object.FileExists(filespec)

FileExists 方法語法有如下幾部分:

部分 描述
object 必需的。始終是一個 FileSystemObject 的名字。
filespec 必需的。要確定是否存在的文件的名字。如果認爲文件不在當前文件夾中,必須提供一個完整的路徑說明(絕對的或相對的)。


FolderExists 方法

描述

如果指定的文件夾存在返回 True,不存在返回 False

語法

object.FolderExists(folderspec)

FolderExists 方法語法有如下幾部分:

部分 描述
object 必需的。始終是一個 FileSystemObject 對象的名字。
folderspec 必需的。要確定是否存在的文件夾名字。如果認爲文件夾不在當前文件夾中,必須提供一個完整的路徑說明(絕對的或相對的)。


GetAbsolutePathName 方法

描述

從提供的路徑說明中返回一個完整、明確的路徑。

語法

object.GetAbsolutePathName(pathspec)

GetAbsolutePathName 方法語法有如下幾部分:

部分 描述
object 必需的。始終是一個 FileSystemObject 的名字。
pathspec 必需的。要改變到一個完整、明確路徑的路徑說明。

說明

一個路徑如果提供了從指定驅動器根目錄的一個完整引用,則該路徑是完整、明確的。一個完整的路徑如果指定一個被映射驅動器的根文件夾,它只能以路徑分隔符(/)爲結尾。

假設當前目錄是 c:/mydocuments/reports,下面的表說明了 GetAbsolutePathName 方法的行爲。

Pathspec 返回的路徑
"c:" "c:/mydocuments/reports"
"c:.." "c:/mydocuments"
"c:///" "c:/"
"c:*.*/may97" "c:/mydocuments/reports/*.*/may97"
"region1" "c:/mydocuments/reports/region1"
"c:/../../mydocuments" "c:/mydocuments"


GetBaseName 方法

描述

返回一個包含路徑中最後部件的基本名字(去掉任何文件擴展名)的字符串。

語法

object.GetBaseName(path)

GetBaseName 方法語法有如下幾部分:

部分 描述
object 必需的。始終是一個 FileSystemObject 的名字。
path 必需的。 要返回其基本名字的部件的路徑說明。

說明

如果沒有部件和 path 參數匹配,GetBaseName 方法返回一個長度爲零的字符串("")。

注意   GetBaseName 方法只對提供的 path 字符串起作用。它既不試圖去辨認路徑,也不檢查指定路徑是否存在。


GetDrive 方法

描述

返回一個與指定路徑中的驅動器相對應的 Drive 對象。

語法

object.GetDrive drivespec

GetDrive 方法語法有如下幾部分:

部分 描述
Object 必需的。始終是一個 FileSystemObject 的名字。
Drivespec 必需的。drivespec參數可以是一個驅動器字符(c)、一個驅動器字符加一個冒號(c:)、一個驅動器字符加冒號和路徑分隔符(c:/)或任何網絡共享的說明(//computer2/share1)。

說明

對於網絡共享,要進行檢查以確保共享存在。

如果 drivespec 不符合任何一種可以接受的形式或者不存在,則發生一個錯誤。

對一個普通路徑字符串調用 GetDrive 方法,使用下面步驟得到一個適合作爲 drivespec 使用的字符串:

DriveSpec = GetDriveName(GetAbsolutePathName(Path))

GetDriveName 方法

描述

返回一個包含指定路徑的驅動器名字的字符串。

語法

object.GetDriveName(path)

GetDriveName 方法語法有如下幾部分:

部分 描述
object 必需的。始終是一個 FileSystemObject 的名字。
path 必需的。要返回其驅動器名字的部件的路徑說明。

說明

如果驅動器不能確定,GetDriveName 方法返回一個長度爲零的字符串("")。

注意   GetDriveName 方法只對提供的路徑字符串起作用。它沒有嘗試去辨認路徑,也不對指定路徑是否存在進行檢查。


GetExtensionName 方法

描述

返回一個包含路徑中最後部件擴展名的字符串。

語法

object.GetExtensionName(path)

GetExtensionName 方法語法有如下幾部分:

部分 描述
object 必需的。始終是一個 FileSystemObject 的名字。
path 必需的。.要返回其擴展名的部件的路徑說明。

說明

對於網絡驅動器,根目錄(/)被認爲是一個部件。

如果沒有部件和 path 參數相匹配,GetExtensionName 方法返回一個長度爲零的字符串 ("")。


GetFile 方法

描述

返回一個和指定路徑中文件相對應的 File 對象。.

語法

object.GetFile(filespec)

GetFile 方法語法有如下幾部分:

部分 描述
object 必需的。始終是一個 FileSystemObject. 的名字。
filespec 必需的。Filespec 是到一個指定文件的路徑(絕對的或相對的)。

說明

如果指定的文件不存在,則發生一個錯誤。


GetFileName 方法

描述

返回指定路徑中的最後部件,該路徑不是驅動器說明的一部分。

語法

object.GetFileName(pathspec)

GetFileName 方法語法有如下幾部分:

部分 描述
object 必需的。始終是一個 FileSystemObject 的名字。
pathspec 必需的。到一個指定文件的路徑(絕對的或相對的)。

說明

如果 pathspec 不是以已命名部件結尾,GetFileName 方法返回一個零長度字符串("")。

注意   GetFileName 方法僅在提供的路徑字符串上起作用。它沒有嘗試去辨認路徑,也不對指定路徑是否存在進行檢查。


GetFolder 方法

描述

返回一個和指定路徑中文件夾相對應的 Folder 對象。

語法

object.GetFolder(folderspec)

GetFolder方法語法有如下幾部分:

部分 描述
object 必需的。始終是一個 FileSystemObject. 的名字。
folderspec 必需的。Folderspec 是指定文件夾的路徑(絕對的和相對的)。

說明

如果指定的文件夾不存在,則發生一個錯誤。


GetParentFolderName 方法

描述

返回一個包含指定路徑最後部件父文件夾名字的字符串。

語法

object.GetParentFolderName(path)

GetParentFolderName 方法語法有如下幾部分:

部分 描述
object 必需的。始終是 一個 FileSystemObject 的名字。
path 必需的。要返回其父文件夾名字的部件的路徑說明。

說明

如果 path 參數指定的部件沒有父文件夾,則 GetParentFolderName 方法返回一個零長度字符串("")。

注意   GetParentFolderName 方法僅對提供的 path 字符串起作用。它沒有嘗試去辨認路徑,也不對指定路徑是否存在進行檢查。


GetSpecialFolder 方法

描述

返回指定的特殊文件夾。

語法

object.GetSpecialFolder(folderspec)

GetSpecialFolder 方法語法有如下幾部分:

部分 描述
object 必需的。始終是一個 FileSystemObject 的名字。
folderspec 必需的。要返回的特殊文件夾的名字。可以是在設置值部分中列出的任何常數。

設置值

folderspec 參數可爲任何的下列值:

常數 描述
WindowsFolder 0 Windows 文件夾,包含由 Windows 操作系統安裝的文件。
SystemFolder 1 系統文件夾,包含庫、字體、設備驅動程序。
TemporaryFolder 2 Temp 文件夾,用於存儲臨時文件。它的路徑在 TMP 環境變量中。


GetTempName 方法

描述

返回一個隨機產生的臨時文件或文件夾的名字,該名字在執行需要臨時文件或文件夾的操作時有用。

語法

object.GetTempName

可選的 object 始終是一個 FileSystemObject. 的名字。

說明

GetTempName 方法不產生一個文件,它僅提供一個臨時文件名字,該名字可被 CreateTextFile 用於創建一個文件。


Item 方法

利用位置或鍵返回 Collection 對象的指定成員。

語法

object.Item(index)

Item 方法的語法具有下列對象限定符和部分:

部分 描述
object 必要。對象表達式,其值爲“應用於”列表中對象。
index 必要。爲一表達式,指定集合中成員的位置。如果是數值表達式,則 index 必須是從 1 到集合 Count 屬性值之間的數值。如果是字符串表達式,則當加入一被引用的成員到集合時,index 必須和 key 參數對應。

說明

如果 index 值無法與集合的任何現有成員匹配,就會導致錯誤發生。

Item 方法是集合的缺省方法。因此,以下兩行程序代碼等價:

Print MyCollection(1)
Print MyCollection.Item(1)

Items 方法

描述

返回一個包含 Dictionary 對象中所有條目的數組。

語法

object.Items

object始終是一個 Dictionary 對象的名字。

說明

下面的代碼舉例說明了 Items 方法的使用。:

Dim a, d, i             '創建一些變量
Set d = CreateObject("Scripting.Dictionary")
d.Add "a", "Athens"     '添加一些關鍵字和條目。
d.Add "b", "Belgrade"
d.Add "c", "Cairo"
a = d.Items             '取得條目
For i = 0 To d.Count -1 '重複數組
    Print a(i)          '打印條目
Next
...

Keys方法

描述

返回一個數組,該數組包含一個 Dictionary 對象中的全部已有的關鍵字。

語法

object.Keys

object始終是一個 Dictionary 對象的名字。

說明

下面的代碼舉例說明了 Keys 方法的使用。

Dim a, d, i             '創建一些變量
Set d = CreateObject("Scripting.Dictionary")
d.Add "a", "Athens"     '添加一些關鍵字和條目。
d.Add "b", "Belgrade"
d.Add "c", "Cairo"
a = d.keys              '取得關鍵字
For i = 0 To d.Count -1 '重複數組
    Print a(i)          '打印關鍵字
Next
...

Move 方法

描述

將一個指定的文件或文件夾從一個地方移動到另一個地方。

語法

object.Move destination

Move 方法語法有如下幾部分:

部分 描述
object 必需的。始終是一個 File Folder 對象的名字。
destination 必需的。文件或文件夾要移動到的目標。不允許有通配符。

說明

Move 方法對一個 File Folder 的結果和執行 FileSystemObject.MoveFile FileSystemObject.MoveFolder 操作的結果是一樣的。但應當注意,後面的方法能夠移動多個文件或文件夾。


MoveFile 方法

描述

將一個或多個文件從一個地方移動到另一個地方。

語法

object.MoveFile source, destination

MoveFile 方法語法有如下幾部分:

部分 描述
Object 必需的。始終是一個 FileSystemObject 的名字。
Source 必需的。一個或多個要移動文件的路徑。Source 參數字符串只能在路徑的最後部件中包含通配符。
destination 必需的。一個或多個文件要移動到的目標路徑。 Destination 參數不能包含通配符。

說明

如果 source 包含通配符或 destination 以路徑分隔符 (/) 爲結尾,則認爲 destination 指定了一個存在的文件夾,在此文件夾中移動相匹配的文件。否則,認爲 destination 是一個要創建的目標文件名。在上面任一情況下,當移動一個文件時可能出現三種事件。

  • 如果 destination 不存在,文件得到移動。這是通常的情況。

  • 如果 destination 是一個已存在文件,則發生一個錯誤。

  • 如果 destination 是一個目錄,則發生一個錯誤。

如果一個在 source 中使用的通配符不能和任何一個文件匹配,也發生一個錯誤。 MoveFile 方法停止在它遇到的第一個錯誤上。不要嘗試回捲錯誤發生前所做的任何改變。

重點   只有操作系統支持的情況下,這個方法才允許在卷之間移動文件。


MoveFolder 方法

描述

將一個或多個文件夾從一個地方移動到另一個地方。

語法

object.MoveFolder source, destination

MoveFolder 方法語法有如下幾部分:

部分 描述
object 必需的。始終是一個 FileSystemObject 的名字。
source 必需的。一個或多個要移動的文件夾路徑。Source 參數字符串只能在路徑的最後部件中包含通配符。
destination 必需的。一個或多個文件夾要移動到的目標路徑。Destination 參數不能包含通配符。

說明

如果 source 包含通配符或 destination 以路徑分隔符 (/) 爲結尾,則認爲 destination 指定了一個已存在的文件夾,在此文件夾中移動相匹配的文件。否則,認爲 destination 是一個要創建的目標文件夾名字。在上面的任一種情況下,當一個文件夾被移動時可能出現三種情況。

  • 如果 destination 不存在,文件夾得到移動。這是通常的情況。

  • 如果 destination 是一個已存在文件,則發生一個錯誤。

  • 如果 destination 是一個目錄,則發生一個錯誤。

如果 source 中使用的一個通配符不能和任何文件夾相匹配,也發生一個錯誤。MoveFolder 方法停止在它遇到的第一個錯誤上。不要嘗試回捲在錯誤發生前所做的任何改變。

重點   只有在操作系統支持的情況下,這個方法才允許文件夾在卷之間移動。


OpenAsTextStream 方法

描述

打開一個指定的文件並返回一個 TextStream 對象,該對象可用來對文件進行讀、寫、追加操作。

語法

object.OpenAsTextStream([iomode, [format]])

OpenAsTextStream 方法語法有如下幾部分:

部分 描述
Object 必需的。始終是一個 File 對象的名字。
Iomode 可選的。表明輸入/輸出方式。可爲三個常數之一:ForReadingForWriting ForAppending
format 可選的。三個 Tristate 值之一,用於指示打開文件的格式。如果省略,則文件以 ASCII 格式打開。

設置值

iomode 參數可爲下面設置值中的任何值:

常數 描述
ForReading 1 打開一個只讀文件,不能對此文件進行寫操作。
ForWriting 2 打開一個用於寫操作的文件。如果和此文件同名的文件已存在,則覆蓋以前內容。
ForAppending 8 打開一個文件並寫到文件的尾部。

Format 參數可爲下面設置值中的任何值:

常數 描述
TristateUseDefault -2 使用系統缺省打開文件。
TristateTrue -1 以 Unicode 格式打開文件。
TristateFalse 0 以 ASCII 格式打開文件。

說明

OpenAsTextStream 方法提供了和 FileSystemObject. 的 OpenTextFile 方法相同的功能。此外,OpenAsTextStream 方法還可以用於對一個文件進行寫操作。

下面的代碼舉例說明了 OpenAsTextStream 方法的使用:

Sub TextStreamTest
    Const ForReading = 1, ForWriting = 2, ForAppending = 3
    Const TristateUseDefault = -2, TristateTrue = -1, 
TristateFalse = 0
    Dim fs, f, ts, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    fs.CreateTextFile "test1.txt"            '創建一個文件
    Set f = fs.GetFile("test1.txt")
    Set ts = f.OpenAsTextStream(ForWriting, TristateUseDefault)
    ts.Write "Hello World"
    ts.Close
    Set ts = f.OpenAsTextStream(ForReading, TristateUseDefault)
    s = ts.ReadLine
    MsgBox s
    ts.Close
End Sub

OpenTextFile 方法

描述

打開一個指定的文件並返回一個 TextStream 對象,該對象可用於對文件進行讀操作或追加操作。

語法

object.OpenTextFile(filename[, iomode[, create[, format]]])

OpenTextFile 方法有如下幾部分:

部分 描述
Object 必需的。始終是一個 FileSystemObject 的名字。
filename 必需的。字符串表達式,它標識了打開的文件。
iomode 可選的。表示輸入/輸出方式。可爲兩個常數之一:ForReadingForAppending
create 可選的。Boolean 值,它表示如果指定的 filename 不存在是否可以創建一個新文件。如果創建新文件,其值爲 True。若不創建文件其值爲 False。缺省值爲 False
format 可選的。三種 Tristate 值之一,用於指示打開文件的格式。如果省略,則文件以 ASCII 格式打開。

設置值

iomode 參數可爲下面設置值的任何一個:

常數 描述
ForReading 1 打開一個只讀文件。不能對此文件進行寫操作。
ForAppending 8 打開一個文件並寫到文件的尾部。

Format 參數可爲下面設置值的任何值:

常數 描述
TristateUseDefault -2 使用系統缺省打開文件。
TristateTrue -1 以 Unicode 格式打開文件。
TristateFalse   0 以 ASCII 格式打開文件。

說明

下面的代碼舉例說明了使用 OpenTextFile 方法打開一個用於追加文本的文件:

Sub OpenTextFileTest
    Const ForReading = 1, ForWriting = 2, ForAppending = 3
    Dim fs, f
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.OpenTextFile("c:/testfile.txt", ForAppending,TristateFalse)
    f.Write "Hello world!"
    f.Close
End Sub

Print 方法

Immediate 窗口中顯示文本。

語法

object.Print [outputlist]

Print 方法的語法具有下列對象限定符和部分:

部分 描述
object 必需的。對象表達式,其值爲“應用於”列表中的對象。
outputlist 可選的。要打印的表達式或表達式的列表。如果省略,則打印一空白行。

outputlist 參數具有以下語法和部分:

{Spc(n) | Tab(n)} expression charpos

部分 描述
Spc(n) 可選的。用來在輸出中插入空白字符,這裏,n 爲要插入的空白字符數。
Tab(n) 可選的。用來將插入點定位在絕對列號上,這裏,n 爲列號。使用無參數的 Tab(n) 將插入點定位在下一個打印區的起始位置。
expression 可選。要打印的數值表達式或字符串表達式。
charpos 可選。指定下個字符的插入點。使用分號 (;) 直接將插入點定位在上一個被顯示的字符之後。使用 Tab(n) 將插入點定位在絕對列號上。使用無參數的 Tab 將插入點定位在下一個打印區的起始位置。如果省略 charpos,則在下一行打印下一字符。

說明

可以用空白或分號來分隔多個表達式。

對系統指定的國別設置,用小數點分隔符將所有打印到 Immediate 視窗的數據正確格式化。關鍵字要用適用於主應用程序的語言輸出。

對於 Boolean 數據,或者打印 True 或者打印 False。根據主機應用程序的地區設置來翻譯 True False 關鍵字。

使用系統能識別的標準短日期格式書寫 Date 數據。當日期或時間部件丟失或爲零時,只書寫已提供的部件。

如果 outputlist 數據是 Empty,則無內容可寫。但是,如果 outputlist 數據是 Null,則輸出 Null。在輸出 Null 關鍵字時,要把關鍵字正確翻譯出來。

要把錯誤數據作爲 Error errorcode 輸出。在輸出 Error 關鍵字時,要把關鍵字正確翻譯出來。

如果在具有缺省顯示空間的模塊外使用此方法,則需要 object。例如,如果沒有指定對象就在標準模塊上調用此方法,則將導致錯誤發生,但是,如果在窗體模塊上進行調用,則會在窗體上顯示“outputlist”

注意 因爲 Print 方法是按照字符比例進行打印,所以字符數與字符所佔據的寬度固定的列的數目無關。例如,像 “W” 這樣的寬字母佔據的寬度超過一固定列寬,而像 "i" 這樣的窄字母佔據的寬度則較小。考慮到要使用比平均字符更寬的空間,表列一定要留有足夠餘地。另外,也可以使用固定間距的字體(像 Courier 字體)來確保每一字符均只佔一列。


Raise 方法

產生運行時錯誤。

語法

object.Raise number, source, description, helpfile, helpcontext

Raise 方法具有下列對象限定符和命名參數:

參數 描述
object 必需的。總是 Err 對象。
Number 必需的。Long整數,識別錯誤性質。Visual Basic 錯誤(既有 Visual Basic 定義的錯誤也有用戶定義的錯誤)的範圍在 0-65535 之間。從 0-512 的範圍保留爲系統錯誤;從 513-65535 的範圍可以用做用戶定義的錯誤。當在類模塊中將 Number 屬性設置成自己的錯誤代碼時,可將錯誤代碼號添加到 vbObjectError 常數上。例如,爲了產生錯誤號 513,可將 vbObjectError + 513 賦值到 Number 屬性。
source 可選的。字符串表達式,爲產生錯誤的對象或應用程序命名。當設置對象的這一屬性時,要使用窗體 project.class。如果沒有指定 source,則使用當前 Visual Basic 工程的程序設計 ID。
description 可選的。描述錯誤的字符串表達式。如果沒有指定,則檢查 Number 的值。如果可以將錯誤映射成 Visual Basic 運行時錯誤代碼,則將 Error 函數返回的字符串作爲 Description 使用。如果沒有與 Number 對應的 Visual Basic 錯誤,則要用到消息“應用程序定義的錯誤或對象定義的錯誤”。
helpfile 可選的。幫助文件的完整限定的路徑,在幫助文件中可以找到有關錯誤的幫助信息。如果沒有指定,則 Visual Basic 會使用 Visual Basic 幫助文件的完整限定的驅動器、路徑和文件名。
helpcontext 可選的。識別 helpfile 內的標題的上下文 ID,而 helpfile 提供有助於瞭解錯誤的描述。如果省略,則使用處理有關錯誤的 Visual Basic 幫助文件的上下文 ID,該 ID 與 Number 屬性對應。

說明

除了 number 之外,所有參數都是可選的。如果使用 Raise 而不指定一些參數,並且 Err 對象的屬性設置含有未清除的值,則視這些值爲錯誤的值。

Raise 被用來生成運行時錯誤,並可用來代替 Error 語句。當書寫類模塊時要生成錯誤,Raise 是有用的,因爲 Err 對象比 Error 語句可能提供更豐富的信息。例如,用 Raise 方法,可以在 Source 屬性中說明生成錯誤的來源,可以引用該錯誤的聯機幫助。


Read 方法

描述

從一個 TextStream 文件中讀取指定數量的字符並返回得到的字符串。

語法

object.Read(characters)

Read 方法語法有如下幾部分:

部分 描述
object 必需的。始終是一個 TextStream 對象的名字。
characters 必需的。從文件中要讀取的字符數。

ReadAll 方法

描述

讀取整個的 TextStream 文件並返回得到的字符串。

語法

object.ReadAll

object 始終是一個 TextStream 對象的名字。

說明

對於大的文件,使用 ReadAll 方法浪費內存資源。應使用其它的技術去輸入一個文件,比如一行一行地讀取文件。


ReadLine 方法

描述

從一個 TextStream 文件讀取一整行(到換行符但不包括換行符)並返回得到的字符串。

語法

object.ReadLine

object參數始終是一個 TextStream 對象的名字。


Remove 方法

把成員從 Collection 對象中刪除。

語法

object.Remove index

Remove 方法的語法具有下列對象限定符和部分:

部分 描述
object 必需的。對象表達式,其值爲“應用於”列表中的對象。
Index 必需的。表達式,指定集合成員的位置。如果是數值表達式,則 index 必須是介於 1 和集合 Count 屬性值之間的數。如果是字符串表達式,則在將被引用的成員添加到集合時,index 必須和 key 參數一致。

說明

如果 index 的值與集合的現有成員不匹配,則會導致錯誤發生。


Remove 方法

描述

從一個 Dictionary 對象中刪除一個關鍵字和條目對。

語法

object.Remove(key)

Remove 方法語法有如下幾部分:

部分 描述
Object 必需的。始終是一個 Dictionary 對象的名字。
Key 必需的。Key 與要從 Dictionary 對象中刪除的關鍵字和條目對相關聯。

說明

如果指定的關鍵字和條目對不存在,則發生一個錯誤。

下面的代碼舉例說明了 Remove 方法的使用:

Dim a, d, i             '創建一些變量
Set d = CreateObject("Scripting.Dictionary")
d.Add "a", "Athens"     '添加一些關鍵字和條目
d.Add "b", "Belgrade"
d.Add "c", "Cairo"
...
a = d.Remove()          '刪除第二對

RemoveAll 方法

描述

RemoveAll 方法從 Dictionary 對象中刪除所有關鍵字和條目對。

語法

object.RemoveAll

object始終是一個 Dictionary 對象的名字。

說明

下面的代碼舉例說明了 RemoveAll 方法的用法:

Dim a, d, i             '創建一些變量
Set d = CreateObject("Scripting.Dictionary")
d.Add "a", "Athens"     '添加一些關鍵字和條目
d.Add "b", "Belgrade"
d.Add "c", "Cairo"
...
a = d.RemoveAll         '清除字典

Skip 方法

描述

當讀一個 TextStream 文件時跳過指定數量的字符。

語法

object.Skip(characters)

Skip 方法語法有下面幾部分:

部分 描述
object 必需的。始終是一個 TextStream 對象的名字。
characters 必需的。當讀文件時要跳過的字符的數量。

說明

跳過的字符被放棄。


SkipLine 方法

描述

當讀一個 TextStream 文件時跳過下一行。

語法

object.SkipLine

object始終是一個 TextStream 對象的名字。

說明

跳過一行是指讀取並放棄一行中的所有字符,一直到幷包括該行的換行符。

如果讀的文件沒有打開,則產生一個錯誤。


Write 方法

描述

寫一個指定的字符串到一個 TextStream 文件。

語法

object.Write(string)

Write 方法語法有如下幾部分:

部分 描述
object 必需的。始終是一個 TextStream 對象的名字。
string 必需的。要寫到文件中去的正文。

說明

指定的字符串被寫入到文件中,在每個字符串之間沒有插入空格或字符。使用 WriteLine 方法寫入一個換行符或一個以換行符爲結尾的字符串。


WriteBlankLines 方法

描述

寫入指定數量的換行符到一個 TextStream 文件中。

語法

object.WriteBlankLines(lines)

WriteBlankLines 方法語法有如下幾部分:

部分 描述
object 必需的。始終是一個 TextStream 對象的名字。
lines 必需的。要寫入的換行符數量。


WriteLine 方法

描述

寫入一個指定的字符串和換行符到一個 TextStream 文件中。.

語法

object.WriteLine([string])

WriteLine 方法語法有如下幾部分:

部分 描述
object 必需的。始終是一個 TextStream 對象的名字。
string 可選的。要寫入文件的正文。如果省略,一個換行符被寫入文件中。


字符集 (0-127)

 0 ? 32 [space] 64 @ 96 `
1 · 33 ! 65 A 97 a
2 · 34 " 66 B 98 b
3 · 35 # 67 C 99 c
4 · 36 $ 68 D 100 d
5 · 37 % 69 E 101 e
6 · 38 & 70 F 102 f
7 · 39 ' 71 G 103 g
8 * * 40 ( 72 H 104 h
9 * * 41 ) 73 I 105 i
10 * * 42 * 74 J 106 j
11 · 43 + 75 K 107 k
12 · 44 , 76 L 108 l
13 * * 45 - 77 M 109 m
14 · 46 . 78 N 110 n
15 · 47 / 79 O 111 o
16 · 48 0 80 P 112 p
17 · 49 1 81 Q 113 q
18 · 50 2 82 R 114 r
19 · 51 3 83 S 115 s
20 · 52 4 84 T 116 t
21 · 53 5 85 U 117 u
22 · 54 6 86 V 118 v
23 · 55 7 87 W 119 w
24 · 56 8 88 X 120 x
25 · 57 9 89 Y 121 y
26 · 58 : 90 Z 122 z
27 · 59 ; 91 [ 123 {
28 · 60 < 92 / 124 |
29 · 61 = 93 ] 125 }
30 · 62 > 94 ^ 126 ~
31 · 63 ? 95 _ 127 ·

*·Microsoft Windows.不支持這些字符。

* *值 8、9、10 和 13 分別轉換爲退格、製表、換行和回車字符。它們並沒有特定的圖形顯示,但會依不同的應用程序,而對文本顯示有不同的影響。


字符集 (128 - 255)

 128 · 160 [space] 192 à 224 à
129 · 161 ? 193 á 225 á
130 · 162 194 ? 226 a
131 · 163 195 ? 227 ?
132 · 164 ¤ 196 ? 228 ?
133 · 165 197 ? 229 ?
134 · 166 | 198 ? 230 ?
135 · 167 § 199 ? 231 ?
136 · 168 ¨ 200 è 232 è
137 · 169 © 201 é 233 é
138 · 170 a 202 ê 234 ê
139 · 171 ? 203 ? 235 ?
140 · 172 ? 204 ì 236 ì
141 · 173 - 205 í 237 í
142 · 174 ® 206 ? 238 ?
143 · 175 ˉ 207 ? 239 ?
144 · 176 ° 208 D 240 e
145 177 ± 209 ? 241 ?
146 178 2 210 ò 242 ò
147 · 179 3 211 ó 243 ó
148 · 180 212 ? 244 ?
149 · 181 μ 213 ? 245 ?
150 · 182 ? 214 ? 246 ?
151 · 183 · 215 × 247 ÷
152 · 184 ? 216 ? 248 ?
153 · 185 1 217 ù 249 ù
154 · 186 o 218 ú 250 ú
155 · 187 ? 219 ? 251 ?
156 · 188 ? 220 ü 252 ü
157 · 189 ? 221 Y 253 y
158 · 190 ? 222 T 254 t
159 · 191 ? 223 ? 255 ?

·Microsoft Windows 並不支持這些字符。

本表中的值是 Windows 的默認值。 ANSI 特徵集中 127 以上的值是由與操作系統有關的代碼頁決定的。


文檔約定

Visual Basic 文檔均遵循以下編排約定:

特定 說明
Sub, If, ChDir, Print, True, Debug 首字母大寫的粗體字表示語言專用的關鍵字。
Setup 操作命令以粗體字表示。
object, varname, arglist 斜體的小寫字母表示您須提供的信息。
pathname, filenumber 粗斜體的小寫字母表示參數,在那兒,可利用其位置指定或命名參數語法。
[expressionlist] 用在語法中,括號中的項目代表可選的。
{While | Until} 用在語法中,表示可從括號中的項目中選擇一個。而且必須選擇一個,除非所有項目外層還有一箇中括號,例如:
  [{This | OrThat}]
ESC,ENTER 小的大寫字母代表按鍵名稱和按鍵順序。
ALT+F1, CTRL+R 以加號 (+) 連接按鍵名稱代表組合鍵,例如,ALT+F1 表示按下 ALT 鍵,再按下 F1。

代碼約定

使用下列代碼約定:

代碼示例 說明
MyString = "Hello, world!" 這種字體都用於代碼、變量與錯誤信息。
' This is a comment. 符號 (') 引導註釋文本。
MyVar = "This is an " _
& "example" _
& " of how to continue code."
空白加下劃線 ( _) 可接續兩行以上的代碼。


Collection 對象

Collection 對象是項目所組成的有序集合,可以把這個集合作爲單元來引用。

說明

Collection 對象提供了簡便方法,直截了當將一組相關的項目視爲單一對象來引用。集合中的項目或成員被這樣一個事實聯繫起來:它們都屬於這個集合。集合的成員不一定都是同一種數據類型的。

建立集合的方法與建立其它對象的方法一樣。例如:

Dim X As New Collection

一旦建立集合之後,就可以用 Add 方法添加成員,用 Remove 方法刪除成員。在用 For Each...Next 語句重複整個集合時,可以用 Item 方法從集合返回特定成員。


Debug 對象

Debug 對象在運行時將輸出發送到 Immediate 窗口。

Dictionary 對象

描述

對象,用於存儲數據關鍵字和條目對。

語法

Scripting.Dictionary

說明

Dictionary 對象與 PERL 關聯數組等價。可以是任何形式的數據的條目被存儲在數組中。每個條目都與一個唯一的關鍵字相關聯。該關鍵字用來檢索單個條目,通常是整數或字符串,可以是除數組外的任何類型。

下面的代碼舉例說明了如何創建一個 Dictionary 對象:

Dim d                   '創建一個變量
Set d = CreateObject(Scripting.Dictionary)
d.Add "a", "Athens"     '添加一些關鍵字和條目
d.Add "b", "Belgrade"
d.Add "c", "Cairo"
...

Drive 對象

描述

對特定磁盤驅動器或網絡共享的屬性提供訪問。

說明

下面的代碼舉例說明了用 Drive 對象來訪問驅動器屬性:

Sub ShowFreeSpace(drvPath)
    Dim fs, d, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set d = fs.GetDrive(fs.GetDriveName(drvPath))
    s = "Drive " & UCase(drvPath) & " - " 
    s = s & d.VolumeName  & vbCrLf
    s = s & "Free Space: " & FormatNumber(d.FreeSpace/1024, 0) 
    s = s & " Kbytes"
    MsgBox s
End Sub

Drives 集合

描述

所有可用驅動器的只讀集合。

說明

對於可刪除的驅動器,不需要將媒體插入其中,它就可以在Drives集合中顯示出來。

下面的代碼舉例說明了如何獲得 Drives 集合,以及如何用 For Each...Next 語句來訪問該集合中的每個Drive:

Sub ShowDriveList
    Dim fs, d, dc, s, n
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set dc = fs.Drives
    For Each d in dc
        s = s & d.DriveLetter & " - " 
        If d.DriveType = Remote Then
            n = d.ShareName
        Else
            n = d.VolumeName
        End If
        s = s & n & vbCrLf
    Next
    MsgBox s
End Sub

Err 對象

含有關於運行時錯誤的信息。

說明

Err 對象的屬性由錯誤的生成者來設置,這個生成者或者是 Visual Basic,或者是對象,或者是程序設計員。

Err 對象的缺省屬性是 Number。因爲該缺省屬性可以用對象名稱 Err 表示,所以不必修改以前用 Err 函數或 Err 語句書寫的代碼。

當運行時錯誤發生時,Err 對象的屬性被填入明確識別錯誤的信息以及處理這個錯誤所使用的信息。爲了在代碼中生成運行時錯誤,請用 Raise 方法。

在任意形式的 ResumeOn Error 語句之後以及在錯誤處理子程序內的 Exit SubExit Function、或 Exit Property 語句之後,將 Err 對象的屬性重新設置爲零或長度爲零的字符串 ("")。可使用 Clear 方法重新明確設置 Err

爲了對系統錯誤和類模塊生成運行時錯誤,要使用 Raise 方法而不使用 Error 語句。在其它代碼中是否使用 Raise 方法,這要看想要返回的信息量有多大。

Err 對象是具有全局範圍的固有對象。在代碼中沒有必要建立這些對象的實例。


File 對象

描述

提供對文件所有屬性的訪問。

說明

下面的代碼舉例說明了如何獲得一個 File 對象,以及如何查看它的一個屬性。

Sub ShowFileInfo(filespec)
    Dim fs, f, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFile(filespec)
    s = f.DateCreated
    MsgBox s
End Sub

Files 集合

描述

在一個文件夾內的所有 File 對象的集合。

說明

下面的代碼舉例說明了如何獲得一個 Files 集合,以及如何用 For Each...Next 語句來訪問這個集合中的每個File:

Sub ShowFolderList(folderspec)
    Dim fs, f, f1, fc, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(folderspec)
    Set fc = f.Files
    For Each f1 in fc
        s = s & f1.name 
        s = s & vbCrLf
    Next
    MsgBox s
End Sub

FileSystemObject 對象

描述

提供對計算機文件系統的訪問。

語法

Scripting.FileSystemObject

說明

下面的代碼舉例說明了如何使用 FileSystemObject 返回一個 TextStream 對象,該對象是可讀並可寫的:

Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:/testfile.txt", True)
a.WriteLine("This is a test.")
a.Close

在上面列出的代碼中,CreateObject 函數返回 FileSystemObject (fs)。CreateTextFile 方法接着創建文件作爲一個 TextStream 對象(a),而 WriteLine 方法則向創建的文本文件中寫入一行文本。Close 方法刷新緩衝區並關閉文件。


Folder 對象

描述

提供對一個文件夾所有屬性的訪問。

說明

下面的代碼舉例說明了如何獲得一個 Folder 對象,以及如何返回它的一個屬性:

Sub ShowFolderInfo(folderspec)
    Dim fs, f, s,
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(folderspec)
    s = f.DateCreated
    MsgBox s
End Sub

Folders 集合

描述

包含在一個 Folder 對象內的所有 Folder 對象的集合。

說明

下面的代碼舉例說明了如何獲得一個 Folders 集合,以及如何用 For Each...Next 語句來訪問該集合中的每個Folder:

Sub ShowFolderList(folderspec)
    Dim fs, f, f1, fc, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(folderspec)
    Set fc = f.SubFolders
    For Each f1 in fc
        s = s & f1.name 
        s = s &  vbCrLf
    Next
    MsgBox s
End Sub

TextStream 對象

描述

加快對文件的順序訪問。

語法

TextStream.{property | method}

propertymethod 參數可以是和 TextStream 對象相關聯的任何屬性和方法。請注意,在實際應用中,TextStream 被一個變量佔位符所替代,該變量佔位符表示從 FileSystemObject 返回的 TextStream 對象。

說明

在下面的代碼中,a 是由 FileSystemObject CreateTextFile 方法返回的 TextStream 對象:

Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:/testfile.txt", True)
a.WriteLine("This is a test.")
a.Close

WriteLineCloseTextStream 對象的兩個方法。


& 運算符

用來強制兩個表達式作字符串連接。

語法

result = expression1 & expression2

& 運算符的語法具有以下幾個部分:

部分 描述
result 必需的;任何String或Variant 變量。
expression1 必需的;任何表達式。
expression2 必需的;任何表達式。

說明

如果 expression 不是字符串,則將其轉換成 String 變體。如果兩個表達式都是字符串表達式,則 result 的數據類型是 String;否則 result String 變體。如果兩個表達式都是 Null,則 result 也是 Null。但是,只要有一個 expression Null,那麼在與其它表達式連接時,都將其作爲長度爲零的字符串 ("") 處理。任何 Empty 類型表達式也作爲長度爲零的字符串處理。


* 運算符

用來將兩數相乘。

語法

result = number1*number2

* 運算符的語法具有以下幾個部分:

部分 描述
result 必需的;任何數值變量。
number1 必需的;任何數值表達式。
number2 必需的;任何數值表達式。

說明

result 的數據類型通常與最精確的表達式的數據類型相同。精確度由最低到最高的順序是

Byte、Integer、Long、Single、Currency、Double和Decimal。下列情況是例外:

如果 result
乘法運算有一個 Single 和一個Long 轉換成 Double
result 的數據類型是 LongSingle Date 變體且超出正確範圍, 轉換成有 Double Variant
result 的數據類型是 Byte 變體,且超出正確範圍, 轉換成 Integer 變體。
result 的數據類型是 Integer 變體,且超出正確範圍, 轉換成 Long 變體。

如果有一個或兩個表達式是 Null 表達式,則 result Null。如果一個表達式是 Empty,則作爲 0 處理。

注意 乘法用到的精確度等級與加法和減法用到的精確度等級不一樣。


+ 運算符

用來求兩數之和。

語法

result = expression1+expression2

+ 運算符的語法具有以下幾個部分:

部分 描述
result 必需的;任何數值變量。
expression1 必需的;任何表達式。
expression2 必需的;任何表達式。

說明

在使用 + 運算符時有可能無法確定是做加法還是做字符串連接。爲避免混淆,請使用 & 運算符進行連接,並且改進程序代碼的可讀性。

如果至少有一個表達式不是 Variant,則可運用以下法則:

如果
兩個表達式都是數值數據類型 (Byte、Boolean、Integer、Long、Single、Double、Date、Currency 或是 Decimal) 相加。
兩個表達式都是 String 連接。
一個表達式是數值數據類型而另一個是 Null 之外的任意 Variant 相加。
一個表達式是 String 而其它是 Null 之外的任意 Variant 連接。
一個表達式是 Empty Variant 返回另一個不變的表達式作爲 result
一個表達式是數值數據類型,而另一個是 String 產生一個類型不匹配錯誤。
每個表達式都是 Null result Null

如果兩個表達式都是 Variant 表達式,則可運用下列規則:

如果
兩個 Variant 表達式都是數值 相加。
兩個 Variant 表達式都是字符串 連接。
一個 Variant 表達式是數值而另一個是字符串 相加。

對於只有數值數據類型表達式的單純加法,result 的數據類型通常與其中最精確的表達式的數據類型相同。精確度由最低到最高的順序是 ByteIntegerLongSingleDoubleCurrency Decimal。但下列情況例外:

如果 result
一個 Single 和一個 Long 相加, 一個 Double
result 的數據類型是 LongSingle Date 變體,且越出正確範圍, 轉換成 Double 變體。
result 的數據類型是 Byte 變體,且超過本身的正確範圍時, 轉換成 Integer 變體。
result 的數據類型是 Integer 變體,且超過本身的正確範圍時, 轉換成 Long 變體。
將一個 Date 加到任何數據類型上, 一個 Date

如果有一個或兩個表達式是 Null 表達式,則 result Null。如果兩個表達式都是 Empty,則 result Integer。但是,如果只有一個表達式是 Empty,則另一個表達式原封不動地作爲 result 返回。

注意 加法和減法用到的精確度等級與乘法用到的精確度等級不一樣。


- 運算符

用來求兩數之差或表示數值表達式的負值。

語法 1

result = number1 - number2

語法 2

- number

- 運算符的語法具有以下幾個部分:

部分 描述
result 必需的;任何數值變量。
number 必需的;任何數值表達式。
number1 必需的;任何數值表達式。
number2 必需的;任何數值表達式。

說明

在語法 1 中,- 運算符是求兩數之差的算術減法運算符。在語法 2 中,- 運算符爲一元負運算符,說明表達式的值爲負值。

result 的數據類型通常與最精確的表達式的數據類型相同。精確度由最低到最高的順序是Byte、Integer、Long、Single、Double、Currency 和 Decimal。

下列情況例外:

如果 result
當減法運算中有一個 Single 和一個 Long 轉換成一個 Double
result 的數據類型是一個 LongSingle 或 Date 變體,且超出正確範圍, 轉換成包含 Double 的Variant。
result 的數據類型是一個 Byte 變體,且超出正確範圍, 轉換成一個 Integer 變體。
result 的數據類型是一個 Integer 變體,且超出正確範圍, 轉換成一個 Long 變體。
減法運算中有 Date 和其它任何數據類型, 一個 Date
減法運算中有兩個 Date 表達式, 一個 Double

如果有一個或兩個表達式是 Null 表達式,則 result Null。如果一個表達式是 Empty,則作爲 0 處理。

注意 加法和減法用到的精確度等級與乘法用到的精確度等級不一樣。


/ 運算符

用來進行兩個數的除法運算並返回一個浮點數。

語法

result = number1/number2

/ 運算符的語法具有以下幾個部分:

部分 描述
result 必需的;任何數值變量。
number1 必需的;任何數值表達式。
number2 必需的;任何數值表達式。

說明

result 的數據類型通常是 Double 或 Double 變體。下列情況是例外:

如果 result
兩個表達式都是 Byte、Integer 或Single表達式時, 一個 Single,除非超出正確範圍;如果發生這種情況,則產生錯誤。
兩個表達式都是 ByteInteger Single 變體, 一個 Single 變體,除非已超出正確範圍;一旦發生這種情況,result 是一個包含 Double 的 Variant。
除法運算中有一個 Decimal及其它任何數據類型, 一個 Decimal 數據類型。

如果有一個或是兩個表達式是 Null 表達式,則 result Null。如果一個表達式是 Empty 則作爲 0 處理。


/ 運算符

用來對兩個數作除法並返回一個整數。

語法

result = number1/number2

/ 運算符的語法具有以下幾個部分:

部分 描述
result 必需的;任何數值變量。
number1 必需的;任何數值表達式。
number2 必需的;任何數值表達式。

說明

在進行除法運算之前,數值表達式通過捨去小數部分轉換成 Byte、Integer 或 Long表達式。

通常,無論 result 是不是整數,result 的數據類型都是 ByteByte 變體、IntegerInteger 變體、LongLong 變體。任何小數部分都被刪除。但是,如果任何一個表達式是 Null,則 result Null。如果一個表達式是 Empty,則作爲0 處理。


^運算符

用來求一個數字的某次方,次方數爲 exponent 值。

語法

result = number^exponent

^ 運算符的語法具有以下幾個部分:

部分 描述
result 必需的;任何數值變量。
number 必需的;任何數值表達式。
exponent 必需的;任何數值表達式。

說明

只有當 exponent 爲整數值時,number 纔可以爲負數。在表達式中執行多個指數運算時,^ 運算符的計算順序從左到右。

result 的數據類型通常是 Double 或包含 Double 的 Variant。但是,如果 number exponent 中有一個是 Null 表達式,則 result 也是 Null


= 操作符

描述

用於對一個變量或屬性賦值。

語法

variable = value

= 操作符語法有如下幾部分:

部分 描述
variable 任何變量或任何可寫的屬性。
value 任何數值型或字符串文字、常數或表達式。

說明

等號左邊的名字可以是一個簡單的標量變量或一個數組的元素。等號左邊的屬性只能是運行時可寫的屬性。


AddressOf 運算符

一個一元運算符,它將其後面的過程的地址傳遞給一個 API 過程,該 API 過程在參數表對應位置中需要一個函數指針。

語法

AddressOf procedurename

必需的 procedurename 指定要傳遞的地址是哪一個過程的地址。這個過程必須是發出調用命令的工程中的一個標準模塊模塊裏的一個過程。

說明

當一個過程的名稱出現在一個參數列表中時,通常該過程已經被計算,並且該過程返回值的地址也會被傳遞。AddressOf 允許該過程的地址被傳遞給動態鏈接庫 (DLL) 中的一個 Windows API 函數,而不是傳遞該過程的返回值。API 函數然後就可以使用這個地址來調用相應的 Basic 過程,這個過程就是我們所知道的回調。AddressOf 運算符只出現在對 API 過程的調用中。

儘管可以使用 AddressOf 運算符在 Basic 過程之間傳遞過程指針,卻不能通過這樣的一個指針從 Basic 內部調用一個函數。這就是說,例如,一個使用 Basic 編寫的類 不能使用這樣的一個指針來回調自己的控制器。當使用 AddressOf 運算符在 Basic 內的過程之間傳遞一個過程的指針時,被調用過程的參數類型必須定義爲 As Long

警告 如果不能完全理解函數回調的概念,則使用 AddressOf 運算符可能會導致意想不到的結果。必須理解回調的 Basic 部份是如何工作的,以及接受所傳遞的函數地址的 DLL 的代碼是如何工作的。調試這樣的交互操作是非常困難的,因爲該程序和開發環境運行在相同的進程中。在某些情況下,系統的調試也許是不可能的。

注意 可以使用 Microsoft Visual C++ (或者類似的工具)編譯的 DLLs 來創建自己的回調函數原型。要使用 AddressOf 運算符來工作,您的原型必需使用 __stdcall 調用約定。缺省的調用約定 (__cdecl) 不能與 AddressOf 運算符一起工作。

因爲一個回調的調用程序不在用戶自己的程序中,所以很重要的一點是要保證回調過程中的錯誤不被回傳到調用者。可以通過把 On Error Resume Next 語句放置於回調過程的起始處來達到這個要求。


And 運算符

用來對兩個表達式進行邏輯連接。

語法

result = expression1 And expression2

And 運算符的語法具有以下幾個部分:

部分 描述
result 必需的;任何數值變量。
expression1 必需的;任何表達式。
expression2 必需的;任何表達式。

說明

如果兩個表達式的值都是 True,則 resultTrue。如果其中一個表達式的值是 False,則 resultFalse。下列表格說明如何確定 result

如果 expression1 expression2 result
True True True
True False False
True Null Null
False True False
False False False
False Null False
Null True Null
Null False False
Null Null Null

And 運算符還對兩個數值表達式中位置相同的位進行逐位比較,並根據下表對 result 中相應的位進行設置:

如果在 expression1 的位爲 且在 expression2 中的位爲 result
0 0 0
0 1 0
1 0 0
1 1 1


比較運算符

用來比較表達式。

語法

result = expression1 comparisonoperator expression2

result = object1 Is object2

result = string Like pattern

比較運算符具有以下幾個部分:

部分 描述
result 必需的;任何數值變量。
expression 必需的;任何表達式。
comparisonoperator 必需的;任何比較運算符。
object 必需的;任何對象名稱。
string 必需的;任何字符串表達式。
pattern 必需的;任何字符串表達式或字符的範圍。

說明

下列表格中有一系列比較運算符以及判定 result TrueFalse 還是 Null 的條件:

運算符 True if False if Null if
<(小於) expression1 < expression2 expression1 >= expression2 expression1 or expression2 = Null
<=(小於或等於) expression1 <= expression2 expression1 > expression2 expression1 or expression2 = Null
>(大於) expression1 > expression2 expression1 <= expression2 expression1 or expression2 = Null
>=(大於或等於) expression1 >= expression2 expression1 < expression2 expression1 or expression2 = Null
=(等於) expression1 = expression2 expression1 <> expression2 expression1 or expression2 = Null
<>(不等於) expression1 <> expression2 expression1 = expression2 expression1 or expression2 = Null

注意 Is Like 運算符有特定的比較功能,它們不同於表格中的運算符。

在比較兩個表達式的時候可能難以確定將要比較的表達式是數字還是字符串。下列表格將說明如何比較表達式,或說明當其中一個表達式不是 Variant 時,如何獲得比較的結果。

如果
兩個表達式都是數值數據類型 (Byte、Boolean、Integer、Long、Single、Double、Date、Currency 或Decimal) 進行數值比較。
兩個表達式都是 String 進行字符串比較
一個表達式是數值數據類型而另一個是數字 Variant、或可以爲一數字 進行數值比較。
一個表達式是數值數據類型而另一個是不能轉換成數字的字符串 Variant 產生類型不匹配的錯誤。
一個表達式是 String,而另一個是除了 Null 以外的任何 Variant 進行字符串比較。
一個表達式是 Empty 而另一個是數值數據類型 進行數值比較,使用 0 作爲 Empty 表達式。
一個表達式是 Empty 而另一個是 String 進行字符串比較,使用長度爲零的字符串 ("") 作爲 Empty 表達式。

如果 expression1 expression2 都是 Variant 表達式, 則它們的基本類型決定了比較方式。下列表格說明如何比較表達式,或指出通過比較得到的結果,此結果取決於 Variant 的基本類型:

如果
兩個 Variant 表達式都是數值 進行數值比較。
兩個 Variant 表達式都是字符串 進行字符串比較。
一個 Variant 表達式是數值而另一個是字符串 數值表達式小於字符串表達式。
一個 Variant 表達式是 Empty 而另一個是數值 進行數值比較,使用 0 作爲 Empty 表達式。
一個 Variant 表達式是 Empty 而另一個是字符串 進行字符串比較,使用長度爲零的字符串 ("") 作爲 Empty 表達式。
兩個 Variant 表達式都是 Empty 表達式相等。

當一個 Single 與一個 Double 作比較時,Double 會進行舍入處理而與此 Single 有相同的精確度。

如果一個 Currency 與一個 Single Double 進行比較,則 SingleDouble 轉換成一個 Currency。與此相似,當一個 Decimal 要與一個 SingleDouble 進行比較時,SingleDouble 會轉換成一個 Decimal。對於 Currency,任何小於 .0001 的小數將被捨棄,對於 Decimal,任何小於 1E-28 的小數將被捨棄,或者可能產生溢出錯誤。捨棄這樣的小數部分會使原來不相等的兩個數值經過比較後相等。


Eqv 運算符

用來對兩個表達式進行邏輯等價運算。

語法

result = expression1 Eqv expression2

Eqv 運算符的語法具有以下幾個部分:

部分 描述
result 必需的;任何數值變量。
expression1 必需的;任何表達式。
expression2 必需的;任何表達式。

說明

如果有一個表達式是 Null,則 result 也是 Null。如果表達式都不是 Null,則根據下表來確定 result

如果 expression1 expression2 result
True True True
True False False
False True False
False False True

Eqv 運算符對兩個數值表達式中位置相同的位進行逐位比較,並根據下表對 result 中相應的位進行設置:

如果在 expression1 的位爲 且在 expression2 中的位爲 result
0 0 1
0 1 0
1 0 0
1 1 1


Imp 運算符

用來對兩個表達式進行邏輯蘊涵運算。

語法

result = expression1 Imp expression2

Imp 運算符的語法具有以下幾個部分:

部分 描述
result 必需的;任何數值變量。
expression1 必需的;任何表達式。
expression2 必需的;任何表達式。

說明

下列表格說明如何確定 result

如果 expression1 expression2 result
True True True
True False False
True Null Null
False True True
False False True
False Null True
Null True True
Null False Null
Null Null Null

Imp 運算符對兩個數值表達式中位置相同的位進行逐位比較,並根據下表對 result 中相應的位進行設置:

如果在 expression1 的位爲 且在 expression2 中的位爲 result
0 0 1
0 1 1
1 0 0
1 1 1


Is 運算符

用來比較兩個對象的引用變量。

語法

result = object1 Is object2

Is 運算符的語法具有以下幾個部分:

部分 描述
result 必需的;任何數值變量。
object1 必需的;任何對象名稱。
object2 必需的;任何對象名稱。

說明

如果 object1object2 兩者引用相同的對象,則 resultTrue;否則,resultFalse。有很多方法使兩個變量引用相同的對象。

在以下示例中,A 和 B 已被設置成與 C 引用相同的對象:

Set A = B

在下例中,A 和 B 引用的對象與 C 相同:

Set A = C
Set B = C

Like 運算符

用來比較兩個字符串。

語法

result = string Like pattern

Like 運算符的語法具有以下幾個部分:

部分 描述
result 必需的;任何數值變量。
string 必需的;任何字符串表達式。
pattern 必需的;任何字符串表達式,遵循“說明”中的模式匹配約定。

說明

如果 string pattern 匹配,則 resultTrue;如果不匹配,則 resultFalse。但是如果 stringpattern 中有一個爲 Null,則 resultNull

Like 運算符的特性隨着 Option Compare 語句而不同。每個模塊的缺省字符串比較方法是 Option Compare Binary

在字符串比較中,Option Compare Binary 的結果是根據字符的內部二進制表示法導出的排序順序得到的。在 Microsoft Windows 中,排序順序由代碼頁決定。下例說明通常二進制的排序順序:

A < B < E < Z < a < b < e < z < _ < _ < _ < _ < _ <


Mod 運算符

用來對兩個數作除法並且只返回餘數。

語法

result = number1 Mod number2

Mod 的語法具有以下幾個部分:

部分 描述
result 必需的;任何數值變量。
number1 必需的;任何數值表達式。
number2 必需的;任何數值表達式。

說明

在進行 Mod 運算或求餘數運算時,該運算符將 number1 number2 除(將浮點數字四捨五入成整數),並把餘數作爲 result 的值返回。例如,在下列表達式中,A (result) 等於 5。

A = 19 Mod 6.7

一般說來,不管 result 是否爲一個整數,result 的數據類型爲 Byte,Byte 變體、Integer、Integer 變體、Long 或一個包含 Long 的Variant。任何小數部分都被刪除。但是,如果任何一個 Null,類型的表達式出現時,result 都將是 Null。任何 Empty 類型表達式都作爲 0 處理。


Not 運算符

用來對錶達式進行邏輯否定運算。

語法

result = Not expression

Not 運算符的語法具有以下幾個部分:

部分 描述
result 必需的;任何數值變量。
expression 必需的;任何表達式。

說明

下表說明如何確定 result

如果 expression result
True False
False True
Null Null

此外,Not 運算符改變任何變量的位值,並根據下表設置 result 中相應的位:

如果在 expression 的位爲 則在 result 中的位爲
0 1
1 0


Or 運算符

用來對兩個表達式進行邏輯析取運算。

語法

result = expression1 Or expression2

Or 運算符的語法具有以下幾個部分:

部分 描述
result 必需的;任何數值變量。
expression1 必需的;任何表達式。
expression2 必需的;任何表達式。

說明

如果兩個表達式中至少有一個爲 True,則 result True。下列表格說明如何確定 result

如果 expression1 expression2 result
True True True
True False True
True Null True
False True True
False False False
False Null Null
Null True True
Null False Null
Null Null Null

Or 運算符也對兩個數值表達式中位置相同的位進行逐位比較,並根據下表對 result 中相應的位進行設置:

如果在 expression1 的位爲 且在 expression2 中的位爲 result
0 0 0
0 1 1
1 0 1
1 1 1


Xor 運算符

用來對兩個表達式進行邏輯互斥或運算。

語法

[result =] expression1 Xor expression2

Xor 運算符的語法具有以下幾個部分:

部分 描述
result 可選;任何數值變量。
expression1 必需的;任何表達式。
expression2 必需的;任何表達式。

說明

如果表達式中有一個而且只有一個值爲 True,則 resultTrue。但是,如果表達式中有一個爲 Null,則 result 也爲 Null。當兩個表達式都不爲 Null,則根據下表來確定 result

如果 expression1 expression2 result
True True False
True False True
False True True
False False False

Xor 運算符既可作爲邏輯運算符,也可作爲位運算符。使用互斥或的邏輯進行的兩個表達式的逐位比較,其結果通過下表說明:

如果 expression1 expression2 result
0 0 0
0 1 1
1 0 1
1 1 0


AtEndOfLine 屬性

描述

只讀屬性,在 TextStream 文件中,如果文件指針正好在行尾標記的前面,那麼該屬性值返回 True;否則返回 False

語法

object.AtEndOfLine

object 總是一個 TextStream 對象的名稱。

說明

AtEndOfLine 屬性僅應用於已打開供讀取的 TextStream 文件;否則就會出錯。

下面的代碼舉例說明了 AtEndOfLine 屬性的用法:

Dim fs, a, retstring
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.OpenTextFile("c:/testfile.txt", ForReading, False)
Do While a.AtEndOfLine <> True
    retstring = a.Read(1)
    ...
Loop
a.Close

AtEndOfStream 屬性

描述

只讀屬性,如果文件指針在 TextStream 文件末尾,則該屬性值返回 True;否則返回 False

語法

object.AtEndOfStream

object 總是一個 TextStream 對象的名稱。

說明

AtEndOfStream 屬性僅應用於已打開供讀取的 TextStream 文件;否則就會出錯。

下面的代碼舉例說明了 AtEndOfStream 屬性的用法:

Dim fs, a, retstring
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.OpenTextFile("c:/testfile.txt", ForReading, False)
Do While a.AtEndOfStream <> True
    retstring = a.ReadLine
    ...
Loop
a.Close

Attributes 屬性

描述

設置或者返回文件或文件夾的屬性。讀/寫或只讀,取決於屬性。

語法

object.Attributes [= newattributes]

Attributes 屬性有下列幾個部分:

部分 描述
object 必需的。總是某個 File 或者 Folder 對象的名字。
newattributes 可選的。如果提供的話,newattributes 就是所指定 object 的新屬性值。

設置

newattributes 參數可以是具有下列值中的任意一個或任意的邏輯組合:

常數 描述
Normal 0 一般文件。未設置屬性。
ReadOnly 1 只讀文件。屬性爲讀/寫。
Hidden 2 隱藏文件。屬性爲讀/寫。
System 4 系統文件。屬性爲讀/寫。
Volume 8 磁盤驅動器卷標。屬性爲只讀。
Directory 16 文件夾或目錄。屬性爲只讀。
Archive 32 自上次備份後已經改變的文件。屬性爲讀/寫。
Alias 64 鏈接或快捷方式。屬性爲只讀。
Compressed 128 壓縮文件。屬性爲只讀。

說明

下面的代碼用一個文件舉例說明了 Attributes 屬性的用法:

Sub SetClearArchiveBit(filespec)
    Dim fs, f, r
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFile(fs.GetFileName(filespec))
    If f.attributes and 32 Then
        r = MsgBox("The Archive bit is set, do you want to clear it?", vbYesNo, "Set/Clear Archive Bit")
        If r = vbYes Then 
            f.attributes = f.attributes - 32
            MsgBox "Archive bit is cleared."
        Else
            MsgBox "Archive bit remains set."
        End If
    Else
        r = MsgBox("The Archive bit is not set. Do you want to set it?", vbYesNo, "Set/Clear Archive Bit")
        If r = vbYes Then 
            f.attributes = f.attributes + 32
            MsgBox "Archive bit is set."
        Else
            MsgBox "Archive bit remains clear."
        End If
    End If
End Sub

AvailableSpace 屬性

描述

返回在指定的驅動器或網絡共享上的用戶可用空間容量。

語法

object.AvailableSpace

object 總是一個 Drive 對象。

說明

一般來說,AvailableSpace 屬性的返回值與 FreeSpace 屬性的返回值是相同的。對於支持限額的計算機系統來說,兩個值之間可能會有所不同。

下面的代碼舉例說明了 AvailableSpace 屬性的用法:

Sub ShowAvailableSpace(drvPath)
    Dim fs, d, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set d = fs.GetDrive(fs.GetDriveName(drvPath))
    s = "Drive " & UCase(drvPath) & " - " 
    s = s & d.VolumeName  & vbCrLf
    s = s & "Available Space: " & FormatNumber(d.AvailableSpace/1024, 0) 
    s = s & " Kbytes"
    MsgBox s
End Sub

Calendar 屬性

返回或設置一個值,指出工程中所使用日曆的類型。

可以爲 Calendar使用下列設置之一:

設置 描述
vbCalGreg 0 使用Gregorian 日曆(缺省)。
vbCalHijri 1 使用Hijri 日曆。

說明

可以程序化地只設置Calendar 屬性。例如,要使用Hijri 日曆,使用:

Calendar = vbCalHijri

Column 屬性

描述

只讀屬性,返回 TextStream 文件中當前字符位置的列號。

語法

object.Column

object 總是一個 TextStream 對象的名稱。

說明

在寫了一個新行字符後,但在寫任何其他字符之前,Column 的值是 1。


CompareMode 屬性

描述

設置或返回某個 Dictionary 對象中的比較字符串關鍵字的比較模式。

語法

object.CompareMode[ = compare]

CompareMode 屬性具有下列部分:

部分 描述
object 必需的。總是一個 Dictionary 對象的名稱。
compare 可選的。如果提供的話,compare 是一個代表比較模式的值,該比較模式用於象 StrComp 這樣的函數。

設置

compare 參數可以具有下列值:

常數 描述
VbUseCompareOption –1 使用 Option Compare 語句的設置值進行比較。
vbBinaryCompare  0 進行二進制比較。
vbTextCompare  1 進行文字比較。
vbDatabaseCompare  2 僅用於 Microsoft Access。進行基於您自己數據庫中信息的比較。

說明

如果試圖對已經包含數據的 Dictionary 對象的比較模式進行更改的話,就會出錯。

CompareMode 屬性所用的參數值與 StrComp 函數所用的 compare 參數相同。可以用大於 2 的值表示使用特定 Locale IDs (LCID) 的比較。


Count 屬性

返回 Long(長整數),包含集合中的對象數目。只讀。

Count 屬性

描述

返回集合或 Dictionary 對象中的條目數。只讀。

語法

object.Count

object 總是“應用於”列表中某一項的名稱。

說明

下面的代碼舉例說明了 Count 屬性的使用方法:

Dim a, d, i             '創建一些變量
Set d = CreateObject("Scripting.Dictionary")
d.Add "a", "Athens"     '添加一些關鍵字和條目。
d.Add "b", "Belgrade"
d.Add "c", "Cairo"
a = d.Keys              '獲得關鍵字
For i = 0 To d.Count -1 '遍及數組
    Print a(i)          '打印關鍵字
Next
...

DateCreated 屬性

描述

返回指定文件或文件夾的創建日期和時間。只讀。

語法

object.DateCreated

object 總是一個 fileFolder對象。

說明

下面的代碼用一個文件舉例說明了 DateCreated 屬性的用法:

Sub ShowFileInfo(filespec)
    Dim fs, f, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFile(filespec)
    s = "Created: " & f.DateCreated
    MsgBox s
End Sub

DateLastAccessed 屬性

描述

返回最後一次訪問指定文件或文件夾的日期和時間。只讀。

語法

object.DateLastAccessed

object 總是一個 fileFolder 對象。

說明

下面的代碼用一個文件舉例說明了 DateLastAccessed 屬性的用法:

Sub ShowFileAccessInfo(filespec)
    Dim fs, f, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFile(filespec)
    s = UCase(filespec) & vbCrLf
    s = s & "Created: " & f.DateCreated & vbCrLf
    s = s & "Last Accessed: " & f.DateLastAccessed & vbCrLf
    s = s & "Last Modified: " & f.DateLastModified  
    MsgBox s, 0, "File Access Info"
End Sub

重點   這種方法由其下一級操作系統決定其行爲。如果操作系統不支持提供時間信息,則沒有返回信息。


DateLastModified 屬性

描述

返回最後一次修改指定文件或文件夾的日期和時間。只讀。

語法

object.DateLastModified

object 總是一個 fileFolder 對象。

說明

下面的代碼用一個文件舉例說明了 DateLastModified 屬性的用法:

Sub ShowFileAccessInfo(filespec)
    Dim fs, f, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFile(filespec)
    s = UCase(filespec) & vbCrLf
    s = s & "Created: " & f.DateCreated & vbCrLf
    s = s & "Last Accessed: " & f.DateLastAccessed & vbCrLf
    s = s & "Last Modified: " & f.DateLastModified  
    MsgBox s, 0, "File Access Info"
End Sub

Description 屬性

返回或設置一個字符串表達式,包含與對象相關聯的描述性字符串。可讀/可寫。

對於 Err 對象,返回或設置與錯誤相關聯的描述性字符串。

說明

Description 屬性設置對錯誤進行簡短描述。當無法處理或不想處理錯誤的時候,可以使用這個屬性提醒用戶。在生成用戶自定義的錯誤時,將有關此錯誤的一個簡短陳述指定給 Description 屬性。如果 Description 未填入數據,而且 Number 的值與 Visual Basic 運行時錯誤一致,那麼在生成錯誤時,將 Error 函數返回的字符串放置在 Description 中。


Drive 屬性

描述

返回指定文件或文件夾所在的驅動器符號。只讀。

語法

object.Drive

object 總是一個 FileFolder 對象。

說明

下面的代碼舉例說明了 Drive 屬性的用法:

Sub ShowFileAccessInfo(filespec)
    Dim fs, f, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFile(filespec)
    s = f.Name & " on Drive " & UCase(f.Drive) & vbCrLf
    s = s & "Created: " & f.DateCreated & vbCrLf
    s = s & "Last Accessed: " & f.DateLastAccessed & vbCrLf
    s = s & "Last Modified: " & f.DateLastModified  
    MsgBox s, 0, "File Access Info"
End Sub

DriveLetter 屬性

描述

返回某個物理本地驅動器或網絡共享的驅動器字母。只讀。

語法

object.DriveLetter

object 總是一個 Drive 對象。

說明

如果指定的驅動器沒有同某個驅動器字母關聯起來,例如,未被映射到一個驅動器字母的網絡共享,則 DriveLetter 屬性返回一個 0 字節長度的字符串 ("")。

下面的代碼舉例說明了 DriveLetter 屬性的用法:

Sub ShowDriveLetter(drvPath)
    Dim fs, d, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set d = fs.GetDrive(fs.GetDriveName(drvPath))
    s = "Drive " & d.DriveLetter & ": - " 
    s = s & d.VolumeName  & vbCrLf
    s = s & "Free Space: " & FormatNumber(d.FreeSpace/1024, 0) 
    s = s & " Kbytes"
    MsgBox s
End Sub

Drives 屬性

描述

返回包含本地機器上所有可用 Drive 對象的 Drives 集合。

語法

object.Drives

object 總是一個 FileSystemObject

說明

對於可刪除媒體驅動器來說,不需要插入媒體,就可使其出現在 Drives 集合中。

可以用 For Each...Next 結構遍及 Drives 集合中的成員,如下面的代碼所示:

Sub ShowDriveList
    Dim fs, d, dc, s, n
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set dc = fs.Drives
    For Each d in dc
        s = s & d.DriveLetter & " - " 
        If d.DriveType = 3 Then
            n = d.ShareName
        Else
            n = d.VolumeName
        End If
        s = s & n & vbCrLf
    Next
    MsgBox s
End Sub

DriveType 屬性

描述

返回一個值,表示指定驅動器的類型。

語法

object.DriveType

object 總是一個 Drive 對象。

說明

下面的代碼舉例說明了 DriveType 屬性的用法:

Sub ShowDriveType(drvpath)
    Dim fs, d, s, t
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set d = fs.GetDrive(drvpath)
    Select Case d.DriveType
        Case 0: t = "Unknown"
        Case 1: t = "Removable"
        Case 2: t = "Fixed"
        Case 3: t = "Network"
        Case 4: t = "CD-ROM"
        Case 5: t = "RAM Disk"
    End Select
    s = "Drive " & d.DriveLetter & ": - " & t
    MsgBox s
End Sub

Files 屬性

描述

返回由所有 File 對象組成的 Files 集合,這些 File 對象包含在指定的文件夾中──包括設置了隱藏和系統文件屬性的那些文件。

語法

object.Files

object 總是一個 Folder 對象。

說明

下面的代碼舉例說明了 Files 屬性的用法:

Sub ShowFileList(folderspec)
    Dim fs, f, f1, fc, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(folderspec)
    Set fc = f.Files
    For Each f1 in fc
        s = s & f1.name 
        s = s &  vbCrLf
    Next
    MsgBox s
End Sub

FileSystem 屬性

描述

返回指定驅動器所使用的文件系統類型。

語法

object.FileSystem

object 總是一個 Drive 對象。

說明

可以得到的返回類型包括 FAT、NTFS、以及 CDFS。

下面的代碼舉例說明了 FileSystem 屬性的用法:

Sub ShowFileSystemType
    Dim fs,d, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set d = fs.GetDrive("e:")
    s = d.FileSystem
    MsgBox s
End Sub

FreeSpace 屬性

描述

返回指定驅動器上或網絡共享的用戶可用磁盤剩餘空間容量。只讀。

語法

object.FreeSpace

object 總是一個 Drive 對象。

說明

一般來說,FreeSpace 屬性的返回值和 AvailableSpace 屬性的返回值是相同的。對於支持限額的計算機系統來說,二者之間可能有所不同。

下面的代碼舉例說明了 FreeSpace 屬性的用法:

Sub ShowFreeSpace(drvPath)
    Dim fs, d, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set d = fs.GetDrive(fs.GetDriveName(drvPath))
    s = "Drive " & UCase(drvPath) & " - " 
    s = s & d.VolumeName  & vbCrLf
    s = s & "Free Space: " & FormatNumber(d.FreeSpace/1024, 0) 
    s = s & " Kbytes"
    MsgBox s
End Sub

HelpContext 屬性

返回或設置一個字符串表達式,包含 Microsoft Windows 幫助文件中的主題的上下文 ID。可讀 / 可寫。

說明

HelpContext 屬性被用來自動顯示 HelpFile 屬性中指定的幫助主題。如果 HelpFile HelpContext 都是空的,則檢查 Number 的值。如果 Number 的值與 Visual Basic 運行時錯誤一致,則對此錯誤使用 Visual Basic 幫助上下文 ID。如果 Number 的值與 Visual Basic 錯誤不一致,則在屏幕上顯示 Visual Basic 幫助文件的內容。

注意 應該在應用程序中寫入一些例程來處理常見錯誤。當使用對象編程時,可以用該對象的幫助文件來提高處理錯誤的質量,而如果錯誤無法補救,則要爲用戶顯示一段有意義的消息。


HelpFile 屬性

返回或設置一個字符串表達式,表示幫助文件的完整限定路徑。可讀/可寫。

說明

如果 HelpFile 中指定了幫助文件,則當用戶在錯誤消息對話框中按下 Help 按鈕(或))時,幫助文件被自動調用。如果 HelpContext 屬性包含被指定文件的有效的上下文 ID,則自動顯示那一主題。如果未指定 HelpFile,則顯示 Visual Basic 幫助文件。

注意 應該在應用程序中寫入一些例程來處理常見錯誤。當使用對象編程時,可以用該對象的幫助文件來提高處理錯誤的質量,而如果錯誤無法補救,則要爲用戶顯示一段有意義的消息。


IsReady 屬性

描述

如果指定的驅動器已準備好,返回 True;否則返回 False

語法

object.IsReady

object 總是一個 Drive 對象。

說明

對於可刪除媒體驅動器和 CD-ROM 驅動器來說,僅當插入了適當的媒體,並已準備好供訪問時,IsReady 才返回 True

下面的代碼舉例說明了 IsReady 屬性的用法:

Sub ShowDriveInfo(drvpath)
    Dim fs, d, s, t
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set d = fs.GetDrive(drvpath)
    Select Case d.DriveType
        Case 0: t = "Unknown"
        Case 1: t = "Removable"
        Case 2: t = "Fixed"
        Case 3: t = "Network"
        Case 4: t = "CD-ROM"
        Case 5: t = "RAM Disk"
    End Select
    s = "Drive " & d.DriveLetter & ": - " & t
    If d.IsReady Then 
        s = s & vbCrLf & "Drive is Ready."
    Else
        s = s & vbCrLf & "Drive is not Ready."
    End If
    MsgBox s
End Sub

IsRootFolder 屬性

描述

如果指定的文件夾是根文件夾,則返回 True;否則返回 False

語法

object.IsRootFolder

object 總是一個 Folder 對象。

說明

下面的代碼舉例說明了 IsRootFolder 屬性的用法:

Dim fs
Set fs = CreateObject("Scripting.FileSystemObject")
Sub DisplayLevelDepth(pathspec)
    Dim f, n
    Set f = fs.GetFolder(pathspec)
    If f.IsRootFolder Then
        MsgBox "The specified folder is the root folder."
    Else
        Do Until f.IsRootFolder
            Set f = f.ParentFolder
            n = n + 1
        Loop
        MsgBox "The specified folder is nested " & n & " levels deep."
    End If
End Sub

Item 屬性

描述

Dictionary 對象中指定的 Key,設置或返回一個 Item 。對於集合來說,基於指定的 Key ,返回一個 Item 。讀/寫屬性。

語法

object.Item(key) [= newitem]

Item 屬性具有下列部分:

部分 描述
object 必需的。總是一個集合或 Dictionary 對象的名稱。
key 必需的。與被檢索或添加的條目相關聯的 Key
newitem 可選的。僅用於 Dictionary 對象;沒有用於集合的應用程序。如果提供的話,newitem 是與指定的 Key 相關聯的新值。

說明

如果在改變某個 item 時,沒有找到 key,則用指定的newitem創建一個新的 key 。如果在試圖返回某個已存在條目時,沒有找到 key,則創建一個新 key,且其相應的條目爲空。


Key 屬性

描述

在一個 Dictionary 對象中設置一個 key

語法

object.Key(key) = newkey

Key 屬性具有下列部分:

部分 描述
object 必需的。總是一個 Dictionary 對象的名字。
key 必需的。被更改的 Key值。
newkey 必需的。替換指定 key 的新值。

說明

如果在更改某個 key 時,沒有找到 key,則會出現運行時錯誤。


LastDLLError 屬性

返回因調用動態鏈接庫 (DLL) 而產生的系統錯誤號。只讀。

說明

LastDLLError 屬性只適用於由 Visual Basic 代碼進行的 DLL 調用。在調用時,被調用的函數通常返回一個表明成功還是失敗的代碼,同時對 LastDLLError 屬性填充數據。請檢查 DLL 函數的文檔,確定返回值,表明是成功還是失敗。只要返回失敗代碼,Visual Basic 的應用程序就應立即檢查 LastDLLError 屬性。在設置 LastDLLError 屬性時不會有任何例外。


Line 屬性

描述

只讀屬性,返回一個 TextStream 文件中的當前行號。

語法

object.Line

object 總是一個 TextStream 對象的名字。

說明

文件初次打開後,在寫任何東西之前,Line 的值爲 1。


Name 屬性

描述

設置或返回指定文件或文件夾名。讀/寫屬性。

語法

object.Name [= newname]

Name 屬性有下列幾部分:

部分 描述
object 必需的。總是某個 FileFolder 對象的名字。
newname 可選的。如果提供的話,newname 是指定的 object 的新名。

說明

下面的代碼舉例說明了 Name 屬性的用法:

Sub ShowFileAccessInfo(filespec)
    Dim fs, f, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFile(filespec)
    s = f.Name & " on Drive " & UCase(f.Drive) & vbCrLf
    s = s & "Created: " & f.DateCreated & vbCrLf
    s = s & "Last Accessed: " & f.DateLastAccessed & vbCrLf
    s = s & "Last Modified: " & f.DateLastModified  
    MsgBox s, 0, "File Access Info"
End Sub

Number 屬性

返回或設置表示錯誤的數值。Number Err 對象的缺省屬性。可讀/可寫。

說明

從對象返回用戶自定義的錯誤時,把被選作錯誤代碼的數與 vbObjectError 常數相加,並由此設置 Err.Number。例如,用下列代碼返回作爲錯誤代碼的數字 1051:

Err.Raise Number := vbObjectError + 1051, Source:= SomeClass

ParentFolder 屬性

描述

返回指定文件或文件夾的父文件夾對象。只讀。

語法

object.ParentFolder

object 總是一個 FileFolder 對象。

說明

下面的代碼用一個文件舉例說明了 ParentFolder 屬性的用法:

Sub ShowFileAccessInfo(filespec)
    Dim fs, f, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFile(filespec)
    s = UCase(f.Name) & " in " & UCase(f.ParentFolder) & vbCrLf
    s = s & "Created: " & f.DateCreated & vbCrLf
    s = s & "Last Accessed: " & f.DateLastAccessed & vbCrLf
    s = s & "Last Modified: " & f.DateLastModified  
    MsgBox s, 0, "File Access Info"
End Sub

Path 屬性

描述

返回指定文件、文件夾、或驅動器的路徑。

語法

object.Path

object 總是一個 FileFolder、Drive 對象。

說明

對於驅動器字母來說,不包括根驅動器。例如,C 驅動器的路徑是 C:,而不是 C:/。

下面的代碼用一個 File 對象舉例說明了 Path 屬性的用法:

Sub ShowFileAccessInfo(filespec)
    Dim fs, d, f, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFile(filespec)
    s = UCase(f.Path) & vbCrLf
    s = s & "Created: " & f.DateCreated & vbCrLf
    s = s & "Last Accessed: " & f.DateLastAccessed & vbCrLf
    s = s & "Last Modified: " & f.DateLastModified  
    MsgBox s, 0, "File Access Info"
End Sub

RootFolder 屬性

描述

返回一個 Folder 對象,該對象表示一個指定驅動器的根文件夾。只讀屬性。

語法

object.RootFolder

object 總是一個 Drive 對象。

說明

驅動器上所包含的所有文件和文件夾都可以使用返回的 Folder 對象進行訪問。


SerialNumber 屬性

描述

返回用於唯一標識磁盤卷標的十進制序列號。

語法

object.SerialNumber

object 總是一個 Drive 對象。

說明

可以使用 SerialNumber 屬性確保正確的磁盤已插入到某個帶有可刪除媒體的驅動器中。

下面的代碼舉例說明了 SerialNumber 屬性的用法:

Sub ShowDriveInfo(drvpath)
    Dim fs, d, s, t
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))
    Select Case d.DriveType
        Case 0: t = "Unknown"
        Case 1: t = "Removable"
        Case 2: t = "Fixed"
        Case 3: t = "Network"
        Case 4: t = "CD-ROM"
        Case 5: t = "RAM Disk"
    End Select
    s = "Drive " & d.DriveLetter & ": - " & t
    s = s & vbCrLf & "SN: " & d.SerialNumber
    MsgBox s
End Sub

ShareName 屬性

描述

返回指定驅動器的網絡共享名。

語法

object.ShareName

object 總是一個 Drive 對象。

說明

如果 object 不是一個網絡驅動器,則 ShareName 屬性返回一個 0 字節長度的字符串 ("")。

下面的代碼舉例說明了 ShareName 屬性的用法:

Sub ShowDriveInfo(drvpath)
    Dim fs, d, s 
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))
    s = "Drive " & d.DriveLetter & ": - " & d.ShareName
    MsgBox s
End Sub

ShortName 屬性

描述

返回需要較早的 8.3 命名約定的程序所使用的短名字。

語法

object.ShortName

object 總是一個 FileFolder 對象。

說明

下面的代碼用一個 File 對象舉例說明了 ShortName 屬性的用法:

Sub ShowShortName(filespec)
    Dim fs, f, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFile(filespec)
    s = "The short name for " & "" & UCase(f.Name)
    s = s & "" & vbCrLf
    s = s & "is: " & "" & f.ShortName & ""
    MsgBox s, 0, "Short Name Info"
End Sub

ShortPath 屬性

描述

返回需要較早的 8.3 文件命名約定的程序所使用的短路徑。

語法

object.ShortPath

object 總是一個 FileFolder 對象。

說明

下面的代碼用一個 File 對象舉例說明了 ShortName 屬性的用法:

Sub ShowShortPath(filespec)
    Dim fs, f, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFile(filespec)
    s = "The short path for " & "" & UCase(f.Name)
    s = s & "" & vbCrLf
    s = s & "is: " & "" & f.ShortPath & ""
    MsgBox s, 0, "Short Path Info"
End Sub

Size 屬性

描述

對於文件來說,返回以字節爲單位的指定文件大小。對於文件夾來說,返回以字節爲單位的包含在文件夾中所有文件和子文件夾的大小。

語法

object.Size

object 總是一個 FileFolder 對象。

說明

下面的代碼用一個 Folder 對象舉例說明了 Size 屬性的用法:

Sub ShowFolderSize(filespec)
    Dim fs, f, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(filespec)
    s = UCase(f.Name) & " uses " & f.size & " bytes."
    MsgBox s, 0, "Folder Size Info"
End Sub

Source 屬性

返回或設置一個字符串表達式,指明最初生成錯誤的對象或應用程序的名稱。可讀 / 可寫。

說明

Source 屬性是字符串表達式,指定生成錯誤的對象;此表達式通常是這個對象的類名或程序設計的 ID。在程序代碼無法處理被訪問對象產生的錯誤時,請使用 Source 提供消息。例如,如果訪問 Microsoft Excel 時生成了一個“除以零”的錯誤,則 Microsoft Excel 將 Err.Number 設置成代表此錯誤的錯誤代碼,並將 Source 設置成 Excel.Application。

在錯誤生成時,Source 就是應用程序的程序設計 ID。對於類模塊,Source 應該包含一個具有 project.class 窗體的名稱。當代碼中出現不可預料的錯誤時,Source 屬性會自動填上數據。對於標準模塊中的錯誤,Source 含有工程名稱。對於類模塊中的錯誤,Source 包含具有 project.class 窗體的名稱。


SubFolders 屬性

描述

返回包含所有文件夾的一個 Folders 集合,這些文件夾包含在某個特定的文件夾中,包括設置了隱藏和系統文件屬性的那些文件夾。

語法

object.SubFolders

object 總是一個 Folder 對象。

說明

下面的代碼舉例說明了 SubFolders 屬性的用法:

Sub ShowFolderList(folderspec)
    Dim fs, f, f1, s, sf
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(folderspec)
    Set sf = f.SubFolders
    For Each f1 in sf
        s = s & f1.name 
        s = s &  vbCrLf
    Next
    MsgBox s
End Sub

TotalSize 屬性

描述

以字節爲單位,返回驅動器或網絡共享的總空間大小。

語法

object.TotalSize

object 總是一個 Drive 對象。

說明

下面的代碼舉例說明了 TotalSize 屬性的用法:

Sub ShowSpaceInfo(drvpath)
    Dim fs, d, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))
    s = "Drive " & d.DriveLetter & ":"
    s = s & vbCrLf
    s = s & "Total Size: " & FormatNumber(d.TotalSize/1024, 0) & " Kbytes"
    s = s & vbCrLf
    s = s & "Available: " & FormatNumber(d.AvailableSpace/1024, 0) & " Kbytes"
    MsgBox s
End Sub

Type 屬性

描述

返回關於某個文件或文件夾類型的信息。例如,對於以.TXT 結尾的文件來說,返回 "Text Document"。

語法

object.Type

object 總是一個 FileFolder 對象。

說明

下面的代碼舉例說明了返回某個文件夾類型的 Type 屬性的用法。在這個示例中,試圖將 Recycle Bin 的路徑或其他唯一的文件夾提供給過程。

Sub ShowFileSize(filespec)
    Dim fs, f, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(filespec)
    s = UCase(f.Name) & " is a " & f.Type 
    MsgBox s, 0, "File Size Info"
End Sub

VolumeName 屬性

描述

設置或返回指定驅動器的卷標名。讀/寫屬性。

語法

object.VolumeName [= newname]

VolumeName 屬性有下列幾部分:

部分 描述
object 必需的。總是一個 Drive 對象的名字。
newname 可選的。如果提供的話,newname 是指定 object 的新名字。

說明

下面的代碼舉例說明了 VolumeName 屬性的用法:

Sub ShowVolumeInfo(drvpath)
    Dim fs, d, s
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName(drvpath)))
    s = "Drive " & d.DriveLetter & ": - " & d.VolumeName
    MsgBox s
End Sub

AppActivate 語句

激活一應用程序窗口。

語法

AppActivate title[, wait]

AppActivate 語句的語法具有以下幾個命名參數:

部分 描述
title 必需的。字符串表達式,所要激活的應用程序窗口的標題。可以使用 Shell 函數返回的任務識別碼來替換 title,以激活應用程序。
wait 可選的。Boolean值,說明在激活另一個應用程序之前調用的應用程序是否有焦點。如果爲 False(缺省),那麼,即使調用的應用程序沒有焦點,也直接激活指定的應用程序。如果爲 True,則調用的應用程序會等到有焦點後,才激活指定的應用程序。

說明

AppActivate 語句將焦點移動到命名的應用程序或窗口,但並不影響焦點是否最大化或最小化。當用戶採取行動改變焦點或將窗口關閉時,就會將焦點從活動的應用程序窗口移動出去。可用 Shell 函數啓動一個應用程序並設置窗口樣式。

在決定激活哪個應用程序時,請將 title 與每一個運行中的應用程序的標題字符串進行比較。如果沒有完全匹配,就激活任何這樣的應用程序,其標題字符串以 title 開頭。如果以 title 命名的應用程序有很多實例,則激活任何一個實例。


Beep 語句

通過計算機喇叭發出一個聲調。

語法

Beep

說明

呼叫的頻率與時間長短取決於硬件和系統軟件,並隨電腦不同而不同。.


Call 語句

將控制權轉移到一個 Sub 過程,Function 過程,或動態連接庫 (DLL)過程。

語法

[Call] name [argumentlist]

Call 語句的語法具有以下幾個部分:

部分 描述
Call 可選參數;關鍵字。如果指定了這個關鍵字,則 argumentlist 必須加上括號,例如:
  Call MyProc(0)
name 必要參數,要調用的過程名稱。
argumentlist  

說明

調用一個過程時,並不一定要使用 Call 關鍵字。如果使用 Call 關鍵字來調用一個需要參數的過程,argumentlist 就必須要加上括號。如果省略了 Call 關鍵字,那麼也必須要省略 argumentlis 外面的括號。如果使用 Call 語法來調用內建函數或用戶定義函數,則函數的返回值將被丟棄。

若要將整個數組傳給一個過程,使用數組名,然後在數組名後加上空括號。


ChDir 語句

改變當前的目錄或文件夾。

語法

ChDir path

必要的 path 參數是一個字符串表達式,它指明哪個目錄或文件夾將成爲新的缺省目錄或文件夾。path 可能會包含驅動器。如果沒有指定驅動器,則 ChDir 在當前的驅動器上改變缺省目錄或文件夾。

說明

ChDir 語句改變缺省目錄位置,但不會改變缺省驅動器位置。例如,如果缺省的驅動器是 C,則下面的語句將會改變驅動器 D 上的缺省目錄,但是 C 仍然是缺省的驅動器:

ChDir "D:/TMP"   

ChDrive 語句

改變當前的驅動器。

語法

ChDrive drive

必要的 drive 參數是一個字符串表達式,它指定一個存在的驅動器。如果使用零長度的字符串 (""),則當前的驅動器將不會改變。如果 drive 參數中有多個字符,則 ChDrive 只會使用首字母。


Close 語句

關閉 Open 語句所打開的輸入/輸出 (I/O) 文件。

語法

Close [filenumberlist]

可選的 filenumberlist參數爲一個或多個文件號,其中 filenumber 爲任何有效的文件號,語法如下:

[[#]filenumber] [, [#]filenumber] . . .

說明

若省略 filenumberlist,則將關閉 Open 語句打開的所有活動文件。

當關閉 OutputAppend 打開的文件時,將屬於此文件的最終輸出緩衝區寫入操作系統緩衝區。所有與該文件相關聯的緩衝區空間都被釋放。

在執行 Close 語句時,文件與其文件號之間的關聯將終結。


Const 語句

聲明用於代替文字量的常數。

語法

[Public | Private] Const constname [As type] = expression

Const 語句的語法包含下面部分:

部分 描述
Public 可選的。該關鍵字用於在模塊級別中聲明在所有模塊中對所有過程都可以使用的常數。在過程中不能使用。
Private 可選的。該關鍵字用於在模塊級聲明只能在包含該聲明的模塊中使用的常數。不能在過程中使用。
constname 必需的。常數的名稱;遵循標準的變量命名約定。
type 可選的。常數的數據類型;可以是Byte、布爾、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String 或 Variant。所聲明的每個變量都要使用一個單獨的 As 類型子句。
expression 必需的。文字,其它常數,或由除 Is 之外的任意的算術操作符和邏輯操作符所構成的任意組合。

說明

在缺省情況下常數是私有的。過程中的常數總是私有的;它們的可見性無法改變。在標準模塊中,可以用 Public 關鍵字來改變模塊級常數可見性的缺省值。不過,在類模塊中,常數只能是私有的,而且用 Public 關鍵字也不能改變其可見性。

爲了在一行中聲明若干個常數,可以使用逗號將每個常數賦值分開。用這種方法聲明常數時,如果使用了 PublicPrivate 關鍵字,則該關鍵字對該行中所有常數都有效。

在給常量賦值的表達式中,不能使用變量,用戶自定義的函數,或 Visual Basic 的內部函數(如 Chr)。

注意 常數可以使程序更具可讀性,以及易於修改。在程序運行時,常數不會象變量那樣無意中被改變。

如果在聲明常數時沒有顯式地使用 As type 子句,則該常數的數據類型是最適合其表達式的數據類型。

Sub、Function Property 過程中聲明的常數都是該過程的局部常數。在過程外聲明的常數,在包含該聲明的模塊中被定義。在可以使用表達式的地方,都可以使用常數。


Date 語句

設置當前系統日期。

語法

Date = date

對於運行 Microsoft Windows 95 的系統,要設置的 date 必須介於 1980 年 1月 1 日與 2099 年 12 月 31 日之間。對於運行 Microsoft Windows NT 的系統,date 必須介於公元 1980 年 1 月 1 日到 2079 年 12 月 31 日之間。


Declare 語句

用於在模塊級別中聲明對動態鏈接庫 (DLL) 中外部過程的引用。

語法 1

[Public | Private] Declare Sub name Lib "libname" [Alias "aliasname"] [([arglist])]

語法 2

[Public | Private] Declare Function name Lib "libname" [Alias "aliasname"] [([arglist])] [As type]

Declare 語句的語法包含下面部分:

部分 描述
Public 可選的。用於聲明對所有模塊中的所有其它過程都可以使用的過程。
Private 可選的。用於聲明只能在包含該聲明的模塊中使用的過程。
Sub 可選的(但 SubFunction 二者需選其一)。表示該過程沒有返回值。
Function 可選的(但 SubFunction 二者需選其一)。表示該過程會返回一個可用於表達式的值。
name 必需的。任何合法的過程名。注意動態鏈接庫的入口處(entry points)區分大小寫。
Lib 必需的。指明包含所聲明過程的動態鏈接庫或代碼資源。所有聲明都需要 Lib 子句。
libname 必需的。包含所聲明的過程動態鏈接庫名或代碼資源名。
Alias 可選的。表示將被調用的過程在動態鏈接庫 (DLL) 中還有另外的名稱。當外部過程名與某個關鍵字重名時,就可以使用這個參數。當動態鏈接庫的過程與同一範圍內的公用變量、常數或任何其它過程的名稱相同時,也可以使用 Alias。如果該動態鏈接庫過程中的某個字符不符合動態鏈接庫的命名約定時,也可以使用 Alias
aliasname 可選的。動態鏈接庫或代碼資源中的過程名。如果首字符不是數字符號 (#),則 aliasname 是動態鏈接庫中該過程的入口處的名稱。如果首字符是 (#),則隨後的字符必須指定該過程的入口處的順序號。
arglist 可選的。代表調用該過程時需要傳遞的參數的變量表。
type 可選的。Function 過程返回值的數據類型;可以是 Byte、布爾、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(只支持變長)或 Variant,用戶定義類型,或對象類型。

arglist 參數的語法以及語法各個部分如下:

[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type]

部分 描述
Optional 可選的。表示參數不是必需的。如果使用該選項,則 arglist 中的後續參數都必需是可選的,而且必須都使用 Optional 關鍵字聲明。如果使用了 ParamArray,則任何參數都不能使用 Optional
ByVal 可選的。表示該參數按值傳遞。
ByRef 表示該參數按地址傳遞。 ByRef 是 Visual Basic 的缺省選項。
ParamArray 可選的。只用於 arglist 的最後一個參數,表示最後的參數是一個 Variant 元素的 Optional 的數組。使用 ParamArray 關鍵字可以提供任意數目的參數。ParamArray 關鍵字不能與 ByVal、ByRefOptional 一起使用。
varname 必需的。代表傳給該過程的參數的變量名;遵循標準的變量命名約定。
( ) 對數組變量是必需的。指明 varname 是一個數組。
type 可選的。傳遞給該過程的參數的數據類型;可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(只支持變長)、Object、Variant、用戶自定義的類型或對象類型。

說明

Function 過程而言,過程的數據類型決定其返回值的數據類型。可以在 arglist 之後使用 As 子句來指定函數返回值的數據類型。在 arglist 中,可以使用 As 子句來指定任何傳給該過程的參數的數據類型。不單可以指定爲任何標準數據類型,還可以在 arglist 中指定 As Any 來禁止類型檢查,從而允許將任意數據類型傳遞給該過程。

空圓括號表示該 Sub Function 過程沒有參數,且 Visual Basic 應確保不會傳遞任何參數。在下面的示例中,First 不帶任何參數。如果對 First 的調用中使用了參數,就會產生錯誤:

Declare Sub First Lib "MyLib" ()

如果帶參數表,則每次調用該過程時都要檢查參數的個數和類型。在下面的示例中,First 有一個 Long 參數:

Declare Sub First Lib "MyLib" (X As Long)

注意Declare 語句的參數表中不能有定長的字符串;只有變長的字符串才能傳給過程。定長的字符串可以作爲過程參數使用,但在傳遞前都要被轉換爲變長的字符串。

注意 當所調用的外部過程需要一個值爲 0 的字符串時,就要使用 vbNullString 常數。該常數與零長度字符串 ("") 是不相同的。


Deftype 語句

在模塊級別上,爲變量和傳給過程的參數,設置缺省數據類型,以及爲其名稱以指定的字符開頭的 FunctionProperty Get 過程,設置返回值類型。

語法

DefBool letterrange[, letterrange] . . .

DefByte letterrange[, letterrange] . . .

DefInt letterrange[, letterrange] . . .

DefLng letterrange[, letterrange] . . .

DefCur letterrange[, letterrange] . . .

DefSng letterrange[, letterrange] . . .

DefDbl letterrange[, letterrange] . . .

DefDec letterrange[, letterrange] . . .

DefDate letterrange[, letterrange] . . .

DefStr letterrange[, letterrange] . . .

DefObj letterrange[, letterrange] . . .

DefVar letterrange[, letterrange] . . .

所需的 letterrange 參數遵循下述語法:

letter1[-letter2]

letter1letter2 參數指定設置缺省數據類型的名稱範圍。每個參數都是指變量,參數和 Function 過程,或 Property Get 過程名稱的首字母,且參數可以是字母表中的任意字母。letterrange 中不區分字母的大小寫。

說明

語句的名字就確定相應的數據類型:

語句 數據類型
DefBool 布爾
DefByte Byte
DefInt Integer
DefLng Long
DefCur Currency
DefSng Single
DefDbl Double
DefDec Decimal(目前尚不支持)
DefDate Date
DefStr String
DefObj Object
DefVar Variant

 


例如,在下面的程序段中,Message 就是一個字符串變量:

DefStr A-Q
. . .
Message = "Out of stack space."

Deftype 語句只在使用該語句的模塊中有效。例如,一個模塊中的 DefInt 語句只對在該模塊中聲明的變量和傳給過程的參數的缺省數據類型,以及 FunctionProperty Get 過程的返回值的類型有效;而其它模塊中的變量、參數、以及返回值的缺省數據類型就不受影響。如果不用 Deftype 語句顯式地聲明,則所有變量、參數、Function 過程、以及 Property Get 過程的缺省數據類型都是 Variant

當指定字符範圍時,通常爲以字符集的前 128 個字符中的字符開始的變量定義數據類型。不過,如果指定的字符範圍是A-Z,則將所有的變量,包括以字符集的擴展部分(128-255) 中的國際字符開始的變量的缺省類型都設爲指定的類型。

在指定了A-Z 範圍之後,就不能再使用 Deftype 語句來重新定義任何子範圍的變量了。在指定一個範圍後,如果另一個 Deftype 語句定義的範圍中含有前面已定義的字符,就會產生錯誤。不過,不管變量是否已定義,都可以使用帶 As type 子句的 Dim 語句來顯式指定其數據類型。例如,可以在模塊級使用如下代碼將一個缺省數據類型爲 Integer 的變量定義爲 Double

DefInt A-Z
Dim TaxRate As Double

Deftype 語句對用戶定義類型中的元素無影響,因爲這些元素必須顯式聲明。


DeleteSetting 語句

在 Windows 註冊表中,從應用程序項目裏刪除區域或註冊表項設置。

語法

DeleteSetting appname, section[, key]

DeleteSetting 語句的語法具有下列命名參數:

部分 描述
appname 必需的。字符串表達式,包含應用程序或工程的名稱,區域或註冊表項用於這些應用程序或工程。
section 必要。字符串表達式,包含要刪除註冊表項設置的區域名稱。如果只有 appname section,則將指定的區域連同所有有關的註冊表項設置都刪除。
key 可選。字符串表達式,包含要刪除的註冊表項設置。

說明

如果提供了所有參數,則刪除指定的註冊表項設置。如果試圖使用不存在的區域或註冊表項設置上的 DeleteSetting 語句,則發生一個運行時錯誤。


Dim 語句

聲明變量並分配存儲空間。

語法

Dim [WithEvents] varname[([subscripts])] [As [New] type] [, [WithEvents] varname[([subscripts])] [As [New] type]] . . .

Dim 語句的語法包含下面部分:

部分 描述
WithEvents 可選的。關鍵字,說明 varname 是一個用來響應由 ActiveX 對象觸發的事件的對象變量。只有在類模塊中才是合法的。使用 WithEvents,可以聲明任意個所需的單變量,但不能使用 WithEvents 創建數組。NewWithEvents 不能一起使用。
varname 必需的。變量的名稱;遵循標準的變量命名約定。
subscripts 可選的。數組變量的維數;最多可以定義 60 維的多維數組。subscripts 參數使用下面的語法:
  [lower To] upper [, [lower To] upper] . . .
  如果不顯式指定 lower,則數組的下界由 Option Base 語句控制。如果沒有使用 Option Base 語句,則下界爲 0。
New 可選的。可隱式地創建對象的關鍵字。如果使用 New 來聲明對象變量,則在第一次引用該變量時將新建該對象的實例,因此不必使用 Set 語句來給該對象引用賦值。New 關鍵字不能聲明任何內部數據類型的變量,以及從屬對象的實例,也不能與 WithEvents 一起使用。
type 可選的。變量的數據類型;可以是 Byte、布爾、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(對變長的字符串)、String * length (對定長的字符串)、Object、Variant、用戶定義類型、或對象類型。所聲明的每個變量都要一個單獨的 As type 子句。

說明

在模塊級別中用 Dim 聲明的變量,對該模塊中的所有過程都是可用的。在過程級別中聲明的變量,只在過程內是可用的。

可以使用 Dim 語句在模塊級或過程級中聲明變量的數據類型。例如,下面的語句聲明瞭 Integer 類型的變量。

Dim NumberOfEmployees As Integer

也可以使用 Dim 語句來聲明變量的對象類型。下面的語句爲工作表的新建實例聲明瞭一個變量。

Dim X As New Worksheet

如果定義對象變量時沒有使用 New 關鍵字,則在使用該變量之前,必須使用 Set 語句將該引用對象的變量賦值爲一個已有對象。在該變量被賦值之前,所聲明的對象變量有一個特定值 Nothing,這個值表示該變量沒有指向任一個對象實例。

也可以使用帶空圓括號的 Dim 語句來定義動態數組。在定義動態數組後,可以在過程內使用 ReDim 語句來定義該數組的維數和元素。如果試圖在 PrivatePublicDim 語句中重新定義一個已顯式定義了大小的數組的維數時,就會發生錯誤。

如果不指定數據類型或對象類型,且在模塊中沒有 Deftype 語句,則該變量按缺省設置是 Variant 類型。

當初始化變量時,數值變量被初始化爲 0,變長的字符串被初始化爲一個零長度的字符串 (""),而定長的字符串則用 0 填充。Variant 變量被初始化爲 Empty。用戶自定義類型的變量的每個元素作爲各自獨立的變量進行初始化。

注意 當在過程中使用 Dim 語句時,通常將 Dim 語句放在過程的開始處。


Do...Loop 語句

當條件爲 True 時,或直到條件變爲 True 時,重複執行一個語句塊中的命令。

語法

Do [{While | Until} condition]
[statements]
[Exit Do]
[statements]

Loop

或者可以使用下面這種語法:

Do
[statements]
[Exit Do]
[statements]

Loop [{While | Until} condition]

Do Loop 語句的語法具有以下幾個部分:

部分 描述
condition 可選參數。數值表達式或字符串表達式,其值爲 TrueFalse。如果 condition 是 Null,則 condition 會被當作 False
statements 一條或多條命令,它們將被重複當或直到 condition True

說明

Do…Loop 中可以在任何位置放置任意個數的 Exit Do 語句,隨時跳出Do...Loop 循環。Exit Do 通常用於條件判斷之後,例如If Then,在這種情況下,Exit Do 語句將控制權轉移到緊接在 Loop 命令之後的語句。

如果 Exit Do 使用在嵌套的Do…Loop 語句中,則 Exit Do 會將控制權轉移到 Exit Do 所在位置的外層循環。


End 語句

結束一個過程或塊。

語法

End

End Function

End If

End Property

End Select

End Sub

End Type

End With

End 語句的語法有以下幾種形式:

語句 描述
End 停止執行。不是必要的,可以放在過程中的任何位置關閉代碼執行、關閉以 Open 語句打開的文件並清除變量。
End Function 必要的,用於結束一個 Function 語句。
End If 必要的,用於結束一個If…Then…Else 語句塊。
End Property 必要的,用於結束一個Property LetProperty Get、或 Property Set 過程。
End Select 必要的,用於結束一個 Select Case 語句。
End Sub 必要的,用於結束一個 Sub 語句。
End Type 必要的,用於結束一個用戶定義類型的定義(Type 語句)。
End With 必要的,用於結束一個 With 語句。

說明

在執行時,End 語句會重置所有模塊級別變量和所有模塊的靜態局部變量。若要保留這些變量的值,改爲使用 Stop 語句,則可以在保留這些變量值的基礎上恢復執行。

注意   End 語句不調用 Unload、QueryUnload、或 Terminate 事件或任何其它 Visual Basic 代碼,只是生硬地終止代碼執行。窗體和類模塊中的 Unload、QueryUnload、和 Terminate 事件代碼未被執行。類模塊創建的對象被破壞,由 Open 語句打開的文件被關閉,並且釋放程序所佔用的內存。其它程序的對象引用無效。

End 語句提供了一種強迫中止程序的方法。Visual Basic 程序正常結束應該卸載所有的窗體。只要沒有其它程序引用該程序公共類模塊創建的對象並無代碼執行,程序將立即關閉。


Enum 語句

定義枚舉類型。

語法

 [Public | Private] Enum name

membername [= constantexpression]

membername [= constantexpression]

. . .

End Enum

Enum 語句包含下面部分:

部分 描述
Public 可選的。表示該 Enum 類型在整個工程中都是可見的。Enum 類型的缺省情況是 Public
Private 可選的。表示該 Enum 類型只在所聲明的模塊中是可見的。
name 必需的。該 Enum 類型的名稱。name 必須是一個合法的 Visual Basic 標識符,在定義該 Enum 類型的變量或參數時用該名稱來指定類型。
membername 必需的。用於指定該 Enum 類型的組成元素名稱的合法 Visual Basic 標識符。
constantexpression 可選的。元素的值(爲 Long 類型)。可以是別的 Enum 類型。如果沒有指定 constantexpression,則所賦給的值或者是 0(如果該元素是第一個 membername),或者比其直接前驅的值大 1。

說明

所謂枚舉變量,就是指用 Enum 類型定義的變量。變量和參數都可以定義爲 Enum 類型。Enum 類型中的元素被初始化爲 Enum 語句中指定的常數值。所賦給的值可以包括正數和負數,且在運行時不能改變。例如:

Enum SecurityLevel
   IllegalEntry = -1
   SecurityLevel1 = 0
   SecurityLevel2 = 1
End Enum

Enum 語句只能在模塊級別中出現。定義 Enum 類型後,就可以用它來定義變量,參數或返回該類型的過程。不能用模塊名來限定 Enum 類型。類模塊中的 Public Enum 類型並不是該類的成員;只不過它們也被寫入到類型庫中。在標準模塊中定義的 Enum 類型則不寫到類型庫中。具有相同名字的 Public Enum 類型不能既在標準模塊中定義,又在類模塊中定義,因爲它們共享相同的命名空間。若不同的類型庫中有兩個 Enum 類型的名字相同,但成員不同,則對這種類型的變量的引用,將取決於哪一個類型庫具有更高的引用優先級。

不能在 With 塊中使用 Enum 類型作爲目標。


Erase 語句

重新初始化大小固定的數組的元素,以及釋放動態數組的存儲空間。

語法

Erase arraylist

所需的 arraylist 參數是一個或多個用逗號隔開的需要清除的數組變量。

說明

Erase 根據是固定大小(常規的)數組還是動態數組,來採取完全不同的行爲。Erase 無需爲固定大小的數組恢復內存。Erase 按下表來設置固定數組的元素:

數組類型 Erase 對固定數組元素的影響
固定數值數組 將每個元素設爲 0。
固定字符串數組(長度可變) 將每個元素設爲零長度字符串 ("")。
固定字符串數組(長度固定) 將每個元素設爲 0。
固定 Variant 數組 將每個元素設爲 Empty。
用戶定義類型的數組 將每個元素作爲單獨的變量來設置。
對象數組 將每個元素設爲特定值 Nothing

Erase 釋放動態數組所使用的內存。在下次引用該動態數組之前,程序必須使用 ReDim 語句來重新定義該數組變量的維數。


Error 語句

模擬錯誤的發生。

語法

Error errornumber

必要的 errornumber 可以是任何有效的錯誤號。

說明

Error 語句獲得的支持是向後兼容的。在新的代碼中,特別是在建立對象時,要使用 Err 對象的 Raise 方法產生運行時錯誤。

如果已經定義 errornumber,那麼,在 Err 對象的屬性被賦予下列值之後,Error 語句會調用錯誤處理程序:

屬性
Number 作爲參數指定給 Error 語句的值。可以是任何有效的錯誤號。
Source 當前 Visual Basic 工程的名稱。
Description 字符串表達式,如果這個字符串存在,則表達式將與 Error 函數的返回值一致,該返回值是 Error 函數對指定的 Number 的返回值。如果這個字符串不存在,則 Description 包含一個長度爲零的字符串 ("")。
HelpFile Visual Basic 幫助文件的完整限定的驅動器、路徑和文件名。
HelpContext 對於與 Number 屬性一致的錯誤所指定的 Visual Basic 幫助文件上下文 ID。
LastDLLError 零。

如果不存在錯誤處理程序,或未做任何啓動動作,那麼就會由 Err 對象屬性發佈一個錯誤信息並將錯誤信息顯示出來。

注意 並非全部 Visual Basic 主應用程序都可以建立對象。請參考主機應用程序的文檔來判斷它能否建立類和對象。


Event 語句

定義用戶自定義的事件。

語法

[Public] Event procedurename [(arglist)]

Event 語句包含下面部分:

部分 描述
Public 可選的。指定該 Event 在整個工程中都是可見的。缺省情況下 Events 類型是 Public。應注意,事件只能在所聲明的模塊中產生。
procedurename 必需的。事件的名稱;遵循標準的變量命名約定。

arglist 參數的語法及語法的各個部分如下:

[ByVal | ByRef] varname[( )] [As type]

部分 描述
ByVal 可選的。表示該參數是按值傳遞的。
ByRef 可選的。表示該參數是按地址傳遞的。ByRef 是 Visual Basic 的缺省設置。
varname 必需的。代表要傳遞給過程的參數變量的名稱;遵循標準的變量命名約定。
type 可選的。指傳遞給過程的參數的數據類型;可以是 Byte、布爾、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(只支持變長)、Object、Variant、用戶定義類型或對象類型。

說明

事件被聲明之後,就可以使用 RaiseEvent 語句來產生該事件。如果在標準模塊中出現 Event 聲明,就會產生語法錯誤。不能聲明帶返回值的事件。在下面的代碼段中,給出了聲明事件和產生事件的典型事件:

'在類模塊的模塊級中聲明一個事件

Event LogonCompleted (UserName as String)

Sub
   RaiseEvent LogonCompleted("AntoineJan")
End Sub

注意 可以象聲明過程的參數一樣來聲明事件的參數,但有以下不同:事件不能有帶命名參數、Optional 參數、或者 ParamArray 參數。事件沒有返回值。


Exit 語句

退出 Do...LoopFor...NextFunctionSub Property 代碼塊。

語法

Exit Do

Exit For

Exit Function

Exit Property

Exit Sub

Exit 語句的語法有以下幾種形式:

語句 描述
Exit Do 提供一種退出 Do...Loop 循環的方法,並且只能在 Do...Loop 循環中使用。Exit Do 會將控制權轉移到 Loop 語句之後的語句。當 Exit Do 用在嵌套的 Do...Loop 循環中時,Exit Do 會將控制權轉移到 Exit Do 所在位置的外層循環。
Exit For 提供一種退出 For 循環的方法,並且只能在 For...NextFor Each...Next 循環中使用。Exit For 會將控制權轉移到 Next 之後的語句。當 Exit For 用在嵌套的 For 循環中時,Exit For 將控制權轉移到 Exit For 所在位置的外層循環。
Exit Function 立即從包含該語句的 Function 過程中退出。程序會從調用 Function 的語句之後的語句繼續執行。
Exit Property 立即從包含該語句的 Property 過程中退出。程序會從調用 Property 過程的語句之後的語句繼續執行。
Exit Sub 立即從包含該語句的 Sub 過程中退出。程序會從調用 Sub 過程的語句之後的語句繼續執行。

說明

不要將 Exit 語句與 End 語句搞混了。Exit 並不說明一個結構的終止。


FileCopy 語句

複製一個文件。

語法

FileCopy source, destination

FileCopy 語句的語法含有以下這些命名參數:

部分 描述
source 必要參數。字符串表達式,用來表示要被複制的文件名。source 可以包含目錄或文件夾、以及驅動器。
destination 必要參數。字符串表達式,用來指定要複製的目地文件名。destination 可以包含目錄或文件夾、以及驅動器。

說明

如果想要對一個已打開的文件使用 FileCopy 語句,則會產生錯誤。


For Each...Next 語句

針對一個數組或集合中的每個元素,重複執行一組語句。

語法

For Each element In group
[statements]
[Exit For]
[statements]

Next [element]

For...Each...Next 語句的語法具有以下幾個部分:

部分 描述
element 必要參數。用來遍歷集合或數組中所有元素的變量。對於集合來說,element 可能是一個 Variant 變量、一個通用對象變量或任何特殊對象變量。對於數組而言,element只能是一個 Variant 變量。
group 必要參數。對象集合或數組的名稱(用戶定義類型的數組除外)。
statements 可選參數,針對 group 中的每一項執行的一條或多條語句。

說明

如果集合中至少有一個元素,就會進入 For...Each 塊執行。一旦進入循環,便先針對 group 中第一個元素執行循環中的所有語句。如果 group 中還有其它的元素,則會針對它們執行循環中的語句,當 group 中的所有元素都執行完了,便會退出循環,然後從 Next 語句之後的語句繼續執行。

在循環中可以在任何位置放置任意個 Exit For 語句,隨時退出循環。Exit For經常在條件判斷之後使用,例如If Then,並將控制權轉移到緊接在 Next 之後的語句。

可以將一個 For...Each...Next 循環放在另一個之中來組成嵌套式 For...Each...Next 循環。但是每個循環的 element 必須是唯一的。

注意 如果省略 Next 語句中的 element,就像 element 存在時一樣執行。如果 Next 語句在它相對應的 For 語句之前出現,則會產生錯誤。

不能在 For...Each...Next 語句中使用用戶自定義類型數組,因爲 Variant 不能包含用戶自定義類型。


For...Next 語句

以指定次數來重複執行一組語句。

語法

For counter = start To end [Step step]
[statements]
[Exit For]
[statements]

Next [counter]

For…Next 語句的語法具有以下幾個部分:

部分 描述
counter 必要參數。用做循環計數器的數值變量。這個變量不能是布爾或數組元素。
start 必要參數。counter 的初值。
End 必要參數,counter 的終值。
Step 可選參數。counter 的步長。如果沒有指定,則 step 的缺省值爲 1。
Statements 可選參數。放在 For Next 之間的一條或多條語句,它們將被執行指定的次數。

說明

step 參數可以是正數或負數。step 參數值決定循環的執行情況,如下所示:

循環執行,如果
正數或 0 counter <= end
負數 counter >= end

當所有循環中的語句都執行後,step 的值會加到 counter 中。此時,循環中的語句可能會再次執行(基於循環開始執行時同樣的測試),也可能是退出循環並從 Next 語句之後的語句繼續執行。

提示 在循環中改變 counter 的值,將會使程序代碼的閱讀和調試變得更加困難。

循環中可以在任何位置放置任意個 Exit For 語句,隨時退出循環。 Exit For經常在條件判斷之後使用,例如 If...Then,並將控制權轉移到緊接在 Next 之後的語句。

可以將一個 For...Next 循環放置在另一個 For...Next 循環中,組成嵌套循環。不過在每個循環中的 counter 要使用不同的變量名。下面的體系結構是正確的:

For I = 1 To 10
   For J = 1 To 10
      For K = 1 To 10
         ...
      Next K
   Next J
Next I

注意 如果省略 Next 語句中的 counter,就像 counter 存在時一樣執行。但如果 Next 語句在它相對應的 For 語句之前出現,則會產生錯誤。


Function 語句

聲明 Function 過程的名稱,參數以及構成其主體的代碼。

語法

[Public | Private | Friend] [Static] Function name [(arglist)] [As type]
[statements]
[name = expression]
[Exit Function]
[statements]
[name = expression]

End Function

Function 語句的語法包含下面部分:

部分 描述
Public 可選的。表示所有模塊的所有其它過程都可訪問這個 Function 過程。如果是在包含 Option Private 的模塊中使用,則這個過程在該工程外是不可使用的。
Private 可選的。表示只有包含其聲明的模塊的其它過程可以訪問該 Function 過程。
Friend 可選的。只能在類模塊中使用。表示該 Function 過程在整個工程中都是可見的,但對於對象實例的控制者是不可見的。
Static 可選的。表示在調用之間將保留 Function 過程的局部變量值。Static 屬性對在該 Function 外聲明的變量不會產生影響,即使過程中也使用了這些變量。
name 必需的。Function 的名稱;遵循標準的變量命名約定。
arglist 可選的。代表在調用時要傳遞給 Function 過程的參數變量列表。多個變量應用逗號隔開。
type 可選的。Function 過程的返回值的數據類型,可以是 Byte、布爾、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(除定長)、Object、Variant或任何用戶定義類型。
statements 可選的。在 Function 過程中執行的任何語句組。
expression 可選的。Function 的返回值。

其中的 arglist 參數的語法以及語法各個部分如下:

[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue]

部分 描述
Optional 可選的。表示參數不是必需的。如果使用了該選項,則 arglist 中的後續參數都必須是可選的,而且必須都使用 Optional 關鍵字聲明。如果使用了 ParamArray,則任何參數都不能使用 Optional 聲明。
ByVal 可選的。表示該參數按值傳遞。
ByRef 可選的。表示該參數按地址傳遞。ByRef 是 Visual Basic 的缺省選項。
ParamArray 可選的。只用於 arglist 的最後一個參數,指明最後這個參數是一個 Variant 元素的 Optional 數組。使用 ParamArray 關鍵字可以提供任意數目的參數。ParamArray 關鍵字不能與 ByValByRef,或 Optional 一起使用。
varname 必需的。代表參數的變量的名稱;遵循標準的變量命名約定。
type 可選的。傳遞給該過程的參數的數據類型;可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(只支持變長)、Object Variant。如果參數不是 Optional,則也可以是用戶定義類型,或對象類型。
defaultvalue 可選的。任何常數或常數表達式。只對於 Optional 參數時是合法的。如果類型爲 Object,則顯式缺省值只能是 Nothing

說明

如果沒有使用 Public、Private Friend 顯式指定,則 Function 過程缺省爲公用。如果沒有使用 Static,則局部變量的值在調用之後不會保留。Friend 關鍵字只能在類模塊中使用。但 Friend 過程可以被工程的任何模塊中的過程訪問。Friend 過程不會在其父類的類型庫中出現,且 Friend 過程不能被後期綁定。

注意 Function 過程可以是遞歸的;也就是說,該過程可以調用自己來完成某個特定的任務。不過,遞歸可能會導致堆棧上溢。通常 Static 關鍵字和遞歸的 Function 過程不在一起使用。

所有的可執行代碼都必須屬於某個過程。不能在另外的 Function、Sub Property 過程中定義 Function 過程。

Exit Function 語句使執行立即從一個 Function 過程中退出。程序接着從調用該 Function 過程的語句之後的語句執行。在 Function 過程的任何位置都可以有 Exit Function 語句。

 Function 過程與 Sub 過程的相似之處是: Function 過程是一個可以獲取參數,執行一系列語句,以及改變其參數值的獨立過程,而與過程不同的是:當要使用該函數的返回值時,可以在表達式的右邊使用 Function 過程,這與內部函數,諸如 Sqr、CosChr 的使用方式一樣。

在表達式中,可以通過使用函數名,並在其後用圓括號給出相應的參數列表來調用一個 Function 過程。請參閱 Call 語句關於如何調用 Function 過程的詳細說明。

要從函數返回一個值,只需將該值賦給函數名。在過程的任意位置都可以出現這種賦值。如果沒有對 name 賦值,則過程將返回一個缺省值:數值函數返回 0,字符串函數返回一個零長度字符串 (""),Variant 函數則返回 Empty。如果在返回對象引用的 Function 過程中沒有將對象引用賦給 name (通過 Set),則函數返回 Nothing

下面的示例說明如何給一個名爲 BinarySearch 的函數賦返回值。在這個示例中,將 False 賦給了該函數名,表示沒有找到某個值。

Function BinarySearch(. . .) As Boolean
. . .
   '值未找到,返回一個 False 值。
   If lower > upper Then
      BinarySearch = False
      Exit Function
   End If
. . .
End Function

Function 過程中使用的變量分爲兩類:一類是在過程內顯式聲明的,另一類則不是。在過程內顯式聲明的變量(使用 Dim 或等效方法)都是局部變量。對於那些沒有在過程中顯式聲明的變量,除非它們在該過程外更高級別的位置有顯示地聲明,否則也是局部的。

注意 過程可以使用沒有在過程內顯式聲明的變量,但只要有任何在模塊級別中定義的名稱與之相同,就會產生名稱衝突。如果過程中使用的未聲明的變量與另一個過程,常數,或變量的名稱相同,則會認爲過程使用的是模塊級的名稱。顯式聲明變量就可以避免這類衝突。可以使用 Option Explicit 語句來強制顯式聲明變量。

注意 Visual Basic 可能會重新安排數學表達式以提高內部效率。若 Function 過程會改變某個數學表達式中變量的值,則應避免在此表達式中使用該函數。


Get 語句

將一個已打開的磁盤文件讀入一個變量之中。

語法

Get [#]filenumber, [recnumber], varname

Get 語句的語法具有以下幾個部分:

部分 描述
filenumber 必要。任何有效的文件號。
recnumber 可選。Variant (Long)。記錄號(Random 方式的文件)或字節數(Binary 方式的文件),以表示在此處開始讀出數據。
varname 必要。一個有效的變量名,將讀出的數據放入其中。

說明

通常用 Put Get 讀出的數據寫入一個文件

文件中第一個記錄或字節位於位置 1,第二個記錄或字節位於位置 2,依此類推。若省略 recnumber,則會讀出緊隨上一個 GetPut 語句之後的下一個記錄或字節(或讀出最後一個 Seek 函數指出的記錄或字節)。所有用於分界的逗號都必須羅列出來,例如:

Get #4,,FileBuffer

下列規則適用於以 Random 方式打開的文件:

  • 如果要讀出的數據的長度小於 Open 語句的 Len 子句中所指定的長度,Get 會在某個邊界之內讀出隨後的記錄,在這裏,邊界的長度等於記錄的長度。將此文件緩衝區內的現有內容填入到一個空間之內,該空間介於一個記錄的結尾與下一個記錄的開頭之間。因爲無法確定填入的數據量,所以,應設法使記錄的長度與讀出的數據長度一致,這通常是個好辦法。

  • 如果讀出的變量是一個可變長度字符串,則 Get 語句先讀出一個含有字符串長度的雙字節描述符,然後讀出放入變量中的數據。所以,Open 語句中的 Len 子句所指定的記錄長度必須至少比字符串的實際長度多兩個字節。

  • 如果讀出的變量是一個數值類型的 Variant,則 Get 先讀出兩個字節,識別 Variant VarType,然後讀出放入此變量中的數據。例如,在讀出 VarType 3 的 Variant 時,Get 讀出六個字節:前兩個字節說明 Variant VarType 3 (Long),後四個字節則包含 Long 類型數據。Open 語句中的 Len 子句所指定的記錄長度必須至少比儲存變量所需的實際長度多兩個字節。

    注意 可以使用 Get 語句從磁盤中讀出一個 Variant 數組,但不能使用它讀出包含數組的標量 Variant。也不能使用 Get 從磁盤中讀出對象。

  • 如果讀出的變量是 VarType 8 (String) 的 Variant,則 Get 先讀出兩個字節,識別 VarType,接下來的兩個字節指出字符串的長度,然後讀出字符串數據。Open 語句中的 Len 子句所指定的記錄長度必須比實際字符串的長度至少多四個字節。

  • 如果讀出的變量是一個動態數組,則 Get 會讀出一個描述符,其長度等於 2 加上 8 乘以維數,即 2 + 8 * NumberOfDimensions。讀出數組數據和數組描述符就需要佔據字節,而 Open 語句中的 Len 子句所指定的記錄長度必須大於或等於這些字節數的總和。 例如,在將數組寫入磁盤時,下列數組聲明需要 118 個字節:
    Dim MyArray(1 To 5,1 To 10) As Integer
    

    這 118 個字節的分配情況如下:18 個字節用於描述符 (2 + 8 * 2),100 個字節用於數據 (5 * 10 * 2)。

  • 如果讀出的變量是一個大小固定的數組,則 Get 只讀出數據。它不讀出描述符。

  • 如果讀出的變量是任何其他類型的變量(不是可變長度的字符串或 Variant£©,則 Get 只讀出變量數據。Open 語句中的 Len 子句所指定的記錄長度必須大於或等於要讀出的數據的長度。

  • Get 在讀出用戶定義類型的元素時,好象是單獨地讀出每一個元素,只是不在元素之間進行填充。在磁盤上,(用 Put 寫入的)用戶定義的類型的動態數組之前有一個描述符,其長度等於 2 加上 8 乘以維數,即 2 + 8 * NumberOfDimensionsOpen 語句中的 Len 子句所指定的記錄長度必須大於或等於讀出個別元素(包括任何數組及其描述符在內)所需的全部字節數總和。

對於以 Binary 方式打開的文件,Random 的所有規則都適用,但以下情況除外:

  • Open 語句中的 Len 子句不起作用時,Get 連續從磁盤中讀出所有變量;也就是說,兩個記錄之間沒有任何填充。

  • 對於任何不屬於用戶定義的類型的數組,Get 只讀出數據。它不會讀出描述符。

  • Get 讀出可變長度字符串,不管這些字符串是否具有長度爲 2 字節的描述符,它們都不是用戶定義的類型的元素。所讀出的字節數等於字符串已包含的字符數。例如,下列語句從文件號爲 1 的文件中讀出十個字節:
    VarString = String(10, )
    Get #1,,VarString

GoSub...Return 語句

在一個過程中跳到另一個子程序中執行,執行後再返回。

語法

GoSub line
...
line
...

Return

必要的 line 參數可以是任何行標籤或行號。

說明

可以在過程中的任何地方使用 GoSub Return,但是 GoSub 和與之相應的 Return 語句必須放在同一個過程中。一個子程序中可以包含一個以上的 Return 語句,但是當碰到第一個 Return 語句時,程序就會返回到緊接在剛剛執行的 GoSub 語句之後的語句繼續執行。

注意 不能使用 GoSub...Return 來進入或退出 Sub 過程。

提示 創建分開的過程,並使用 GoSub...Return 來調用,可以使程序更具結構化。


GoTo 語句

無條件地轉移到過程中指定的行。

語法

GoTo line

必要的 line 參數可以是任意的行標籤或行號。

說明

GoTo 只能跳到它所在過程中的行。

注意 太多的 GoTo 語句,會使程序代碼不容易閱讀及調試。儘可能使用結構化控制語句(Do...LoopFor...NextIf...Then...ElseSelect Case)。


If...Then...Else 語句

根據表達式的值有條件地執行一組語句。

語法

If condition Then [statements][Else elsestatements]

或者,可以使用塊形式的語法:

If condition Then
[statements]

[ElseIf condition-n Then
[elseifstatements] ...

[Else
[elsestatements]]

End If

If...Then...Else 語句的語法具有以下幾個部分:

部分 描述
condition 必要參數。一個或多個具有下面兩種類型的表達式:
  數值表達式或字符串表達式,其運算結果爲 TrueFalse。如果 condition 爲 Null,則 condition 會視爲 False。
  TypeOf objectname Is objecttype 形式的表達式。其中的 objectname 是任何對象的引用,而 objecttype 則是任何有效的對象類型。如果 objectnameobjecttype 所指定的一種對象類型,則表達式爲 True,否則爲False
statements 在塊形式中是可選參數;但是在單行形式中,且沒有 Else 子句時,則爲必要參數。一條或多條以冒號分開的語句,它們在 condition True 時執行。
condition-n 可選參數。與 condition 同。
elseifstatements 可選參數。一條或多條語句,它們在相關的 condition-n True 時執行。
elsestatements 可選參數。一條或多條語句,它們在前面的 condition condition-n 都不爲 True 時執行。

說明

可以使用單行形式(第一種語法)來做短小簡單的測試。但是,塊形式(第二種語法)則提供了更強的結構化與適應性,並且通常也是比較容易閱讀、維護及調試的。

注意 在單行形式中,按照 If...Then 判斷的結果也可以執行多條語句。所有語句必須在同一行上並且以冒號分開,如下面語句所示:

If A > 10 Then A = A + 1 : B = B + A : C = C + B

在塊形式中,If 語句必須是第一行語句。其中的 ElseElseIf,和 End If 部分可以只在之前加上行號或行標籤。If 塊必須以一個 End If 語句結束。

要決定某個語句是否爲一個 If 塊,可檢查 Then 關鍵字之後是什麼。如果在 Then 同一行之後,還有其它非註釋的內容,則此語句就是單行形式的 If 語句。

ElseElseIf 子句都是可選的。在 If 塊中,可以放置任意多個 ElseIf 子句,但是都必須在 Else 子句之前。If 塊也可以是嵌套的。

當程序運行到一個 If 塊(第二種語法)時,condition 將被測試。如果 conditionTrue,則在 Then 之後的語句會被執行。如果 condition False,則每個 ElseIf 部分的條件式(如果有的話)會依次計算並加以測試。如果找到某個爲 True 的條件時,則其緊接在相關的 Then 之後的語句會被執行。如果沒有一個 ElseIf 條件式爲 True(或是根本就沒有 ElseIf 子句),則程序會執行 Else 部分的語句。而在執行完 Then Else 之後的語句後,會從 End If 之後的語句繼續執行。

提示 根據單一表達式來執行多種可能的動作時,Select Case 更爲有用。不過,TypeOf objectname Is objecttype 子句不能在 Select Case 語句中使用。

注意 TypeOf 不能與諸如 Long、Integer 以及其他不是 Object 的固定數據類型一起使用。


Implements 語句

指定要在包含該語句的類模塊中實現的接口或類。

語法

Implements [InterfaceName | Class]

所需的 InterfaceNameClass 是類型庫中的接口或類的名稱,該類型庫中的方法將用與 Visual Basic 類中相一致的方法來實現。

說明

所謂接口就是代表接口封裝的成員(方法以及屬性)的原型集合;也就是說,它只包含成員過程的聲明部分。一個類提供一個或多個接口的所有方法以及屬性的一種實現方案。類的控制者每次調用函數時,該函數所執行的代碼由類來提供。每個類至少應實現一個缺省接口。在 Visual Basic 中,一個已實現的接口中任何沒有顯式聲明的成員都是缺省接口的隱式成員。

當 Visual Basic 類實現接口時,都會提供該接口的類型庫中說明的所有 Public 過程的版本。除了提供接口原型與自編過程之間的映射關係之外,Implements 語句還使這個類接收對指定接口 ID 的 COM QueryInterface 調用。

注意 Visual Basic 不能實現派生出來的類或接口。

在實現接口或類時,必須包括所用到的 Public 過程。如果在實現接口或類時遺漏了成員,就會產生錯誤。如果正在實現的類中某個過程還沒有代碼,則可以產生一個適當的錯誤信息 (Const E_NOTIMPL = &H80004001),以便用戶意識到該成員還沒有實現。

Implements 語句不能在標準模塊中使用。


Input # 語句

從已打開的順序文件中讀出數據並將數據指定給變量。

語法

Input #filenumber, varlist

Input # 語句的語法具有以下幾個部分:

部分 描述
filenumber 必要。任何有效的文件號。
varlist 必要。用逗號分界的變量列表,將文件中讀出的值分配給這些變量;這些變量不可能是一個數組或對象變量。但是,可以使用變量描述數組元素或用戶定義類型的元素。

說明

通常用 Write #Input # 語句讀出的數據寫入文件。該語句只能用於以 Input Binary 方式打開的文件。

在讀出數據時不經修改就可直接將標準的字符串或數值數據指定給變量。下表說明如何處理其它輸入數據:

數據 指定給變量的值
分隔逗號或空白行 Empty
#NULL# Null
#TRUE# or #FALSE# True False
#yyyy-mm-dd hh:mm:ss# 用表達式表示的日期與/或時間
#ERROR errornumber# errornumber(此變量是一個 Variant,用來標記錯誤)

輸入數據中的雙引號符號 (" ") 將被忽略。

文件中數據項目的順序必須與 varlist 中變量的順序相同,而且與相同數據類型的變量匹配。如果變量爲數值類型而數據不是數值類型,則指定變量的值爲零。

在輸入數據項目時,如果已到達文件結尾,則會終止輸入,併產生一個錯誤。

注意 爲了能夠用 Input # 語句將文件的數據正確讀入到變量中,在將數據寫入文件時,要使用 Write # 語句而不使用 Print # 語句。使用 Write # 語句可以確保將各個單獨的數據域正確分隔開。


Kill 語句

從磁盤中刪除文件。

語法

Kill pathname

必要的 pathname 參數是用來指定一個文件名的字符串表達式。pathname 可以包含目錄或文件夾、以及驅動器。

說明

Microsoft Windows 中,Kill 支持多字符 (*) 和單字符 (?) 的通配符來指定多重文件。


Let 語句

將表達式的值賦給變量或屬性。

語法

[Let] varname = expression

Let 語句的語法包含下面部分:

部分 描述
Let 可選的。顯式使用 Let 關鍵字也是一種格式,但通常都省略該關鍵字。
varname 必需的。變量或屬性的名稱;遵循標準變量命名約定。
expression 必需的。賦給變量或屬性的值。

說明

只有當表達式是一種與變量兼容的數據類型時,該表達式的值纔可以賦給變量或屬性。不能將字符串表達式的值賦給數值變量,也不能將數值表達式的值賦給字符串變量。如果這樣做,就會在編譯時間出現錯誤。

可以用字符串或數值表達式賦值給 Variant 變量,但反過來不一定正確。任何除 Null 之外的 Variant 都可以賦給字符串變量,但只有當 Variant 的值可以解釋爲某個數時才能賦給數值變量。可以使用 IsNumeric 函數來確認 Variant 是否可以轉換爲一個數。

注意 將一種數值類型的表達式賦給另一種數值類型的變量時,會強制將該表達式的值轉換爲結果變量的數值類型。

Let 語句可以將一個記錄類型的變量賦給屬於同一用戶定義類型的變量。使用 LSet 語句可以給不同用戶自定義類型的記錄變量賦值。使用 Set 語句可以將對象引用賦給變量。


Line Input # 語句

從已打開的順序文件中讀出一行並將它分配給 String變量。

語法

Line Input #filenumber, varname

Line Input # 語句的語法具有以下幾個部分:

部分 描述
filenumber 必要。任何有效的文件號。
varname 必要。有效的 Variant 或 String 變量名。

說明

通常用 Print # Line Input # 語句讀出的數據從文件中寫出來。

Line Input # 語句一次只從文件中讀出一個字符,直到遇到回車符 (Chr(13)) 或回車-換行符 (Chr(13) + Chr(10)) 爲止。回車-換行符將被跳過,而不會被附加到字符串上。


Lock,Unlock 語句

對於用 Open 語句打開的全部文件或一部分文件,其它進程所進行的控制訪問。

語法

Lock [#]filenumber[, recordrange]
. . .

Unlock [#]filenumber[, recordrange]

Lock Unlock 語句的語法具有以下幾個部分:

部分 描述
filenumber 必要。任何有效的文件號。
recordrange 可選。要鎖定或解鎖的記錄範圍。

設置

recordrange 參數的設置如下:

recnumber | [start] To end

設置 描述
recnumber 記錄號(Random 方式的文件)或字節數(Binary 方式的文件),指定要開始鎖定或解鎖的位置。
start 第一個要鎖定或解鎖的記錄號或字節數。
end 最後一個要鎖定或解鎖的記錄號或字節數。

說明

在有若干個進程訪問同一個文件的環境中,要使用 Lock Unlock 語句。

在使用 LockUnlock 語句時,這兩個語句總是成對出現。Lock Unlock 的參數必須完全一致。

文件中的第一個記錄或字節在位置 1,第二個記錄或字節在位置 2,依此類推。若只指定一個記錄,則只對該記錄進行鎖定或解鎖。若指定某個範圍內的記錄並省略起始記錄 (start),則將此範圍內的所有記錄從頭到尾 (end) 進行鎖定或解鎖。如果使用無 recnumberLock,則會將整個文件都鎖定;而使用無 recnumberUnlock 則會將整個文件都解鎖。

若已經以順序輸入或輸出的方式打開文件,則無論 start end 指定什麼範圍,Lock Unlock 都將影響整個文件。

警告 在關閉一個文件或退出程序之前,務必要確保用 Unlock 語句刪除對文件進行的所有鎖定。若不能刪除鎖定,則會產生無法預料的後果。


LSet 語句

在一字符串變量中將一字符串往左對齊,或是將一用戶定義類型變量複製到另一用戶自定義類型變量。

語法

LSet stringvar = string

LSet varname1 = varname2

LSet 語句的語法有下面這些部分:

部分 說明
stringvar 必要參數。字符串變量名稱。
string 必要參數。在 stringvar 內想往左對齊的字符串表達式。
Varname1 必要參數。用戶自定義類型變量名,內容將複製進來。
Varname2 必要參數。用戶自定義類型變量名,內容將複製出去。

說明

Lset 會將 stringvar 中空餘的字符以空白替換。

如果 string stringvar 還長,Lset 只在 stringvar 中放置最左邊幾個字符,且長度爲 stringvar 的長度。

警告 不能使用 Lset 將一用戶自定義類型變量複製到另一用戶自定義類型變量。將一個數據類型的數據複製到留給另一數據類型的空間,可能會造成不可預料的結果。

當從一用戶自定義類型複製一變量給其他變量時,此變量的二進制數據會從一個變量複製到另一個變量的內存空間中,但並不關心爲元素指定的數據類型。


Mid 語句

在一 Variant (String) 變量中以另一個字符串中的字符替換其中指定數量的字符。

語法

Mid(stringvar, start[, length]) = string

Mid 語句的語法具有下面幾個部分:

部分 描述
stringvar 必要參數。被更改的字符串變量名。
start 必要參數;Variant (Long)。stringvar 中被替換的字符開頭位置。
length 可選參數;Variant (Long)。被替換的字符數。如果省略,string將全部用上。
string 必要參數。字符串表達式,替換部分 stringvar 的字符串。

說明

被替換的字符數量總是小於或等於 stringvar 的字符數。

注意 MidB 語句作用於包含在字符串中的字節數據。在 MidB 語句中,start 指定 stringvar 中被替換的字節開頭位置,而 length 爲替換的字節數。


MkDir 語句

創建一個新的目錄或文件夾。

語法

MkDir path

必要的 path 參數是用來指定所要創建的目錄或文件夾的字符串表達式。path 可以包含驅動器。如果沒有指定驅動器,則 MkDir 會在當前驅動器上創建新的目錄或文件夾。


Name 語句

重新命名一個文件、目錄、或文件夾。

語法

Name oldpathname As newpathname

Name 語句的語法具有以下幾個部分:

部分 描述
oldpathname 必要參數。字符串表達式,指定已存在的文件名和位置,可以包含目錄或文件夾、以及驅動器。
newpathname 必要參數。字符串表達式,指定新的文件名和位置,可以包含目錄或文件夾、以及驅動器。而由 newpathname 所指定的文件名不能存在。

說明

 Name 語句重新命名文件並將其移動到一個不同的目錄或文件夾中。如有必要,Name 可跨驅動器移動文件。 但當 newpathname 和 oldpathname 都在相同的驅動器中時,只能重新命名已經存在的目錄或文件夾。 Name 不能創建新文件、目錄或文件夾。

在一個已打開的文件上使用 Name,將會產生錯誤。必須在改變名稱之前,先關閉打開的文件。Name 參數不能包括多字符 (*) 和單字符 (?) 的通配符。


On Error 語句

啓動一個錯誤處理程序並指定該子程序在一個過程中的位置;也可用來禁止一個錯誤處理程序。

語法

On Error GoTo line

On Error Resume Next

On Error GoTo 0

On Error 語句的語法可以具有以下任何一種形式:

語句 描述
On Error GoTo line 啓動錯誤處理程序,且該例程從必要的 line 參數中指定的 line 開始。line 參數可以是任何行標籤或行號。如果發生一個運行時錯誤,則控件會跳到 line,激活錯誤處理程序。指定的 line 必須在一個過程中,這個過程與 On Error 語句相同; 否則會發生編譯時間錯誤。
On Error Resume Next 說明當一個運行時錯誤發生時,控件轉到緊接着發生錯誤的語句之後的語句,並在此繼續運行。訪問對象時要使用這種形式而不使用 On Error GoTo
On Error GoTo 0 禁止當前過程中任何已啓動的錯誤處理程序。

說明

如果不使用 On Error 語句,則任何運行時錯誤都是致命的;也就是說,結果會導致顯示錯誤信息並中止運行。

一個“允許的”錯誤處理程序是由 On Error 語句打開的一個處理程序;一個“活動的”錯誤處理程序是處理錯誤的過程中允許的錯誤處理程序。如果在錯誤處理程序處於活動狀態時(在發生錯誤和執行 ResumeExit SubExit FunctionExit Property 語句之間這段時間)又發生錯誤,則當前過程的錯誤處理程序將無法處理這個錯誤。控件返回調用的過程。如果調用過程有一個已啓動的錯誤處理程序,則激活錯誤處理程序來處理該錯誤。如果調用過程的錯誤處理程序也是活動的,則控件將再往回傳到前面的調用過程,這樣一直進行下去,直到找到一個被允許的但不是活動的錯誤處理程序爲止。如果沒有找到被允許而且不活動的錯誤處理程序,那麼在錯誤實際發生的地方,錯誤本身是嚴重的。錯誤處理程序每次將控件返回調用過程時,該過程就成爲當前過程。在任何過程中,一旦錯誤處理程序處理了錯誤,在當前過程中就會從 Resume 語句指定的位置恢復運行。

注意 一個錯誤處理程序不是 Sub 過程或 Function 過程。它是一段用行標籤或行號標記的代碼。

錯誤處理程序依靠 Err 對象的 Number 屬性中的值來確定錯誤發生的原因。在其它任何錯誤發生之前,或在調用一個可能會導致錯誤發生的過程之前,錯誤處理程序應該先測試或存儲 Err 對象中相關的屬性值。Err 對象中的屬性值只反映最近發生的錯誤。Err.Description 中包含有與 Err.Number 相關聯的錯誤信息。

On Error Resume Next 會使程序從緊隨產生錯誤的語句之後的語句繼續執行,或是從緊隨最近一次調用含有 On Error Resume Next 語句的過程的語句繼續運行。這個語句可以置運行時錯誤於不顧,使程序得以繼續執行。可以將錯誤處理程序放置在錯誤發生的地方,而不必將控件傳輸到過程中的其它位置。在調用另一個過程時,On Error Resume Next 語句成爲非活動的,所以,如果希望在例程中進行嵌入錯誤處理,則應在每一個調用的例程中執行 On Error Resume Next 語句。

注意 當處理在訪問其它對象期間產生的錯誤時,與其使用 On Error GoTo 指令,不如使用 On Error Resume Next。每次和對象打交道,在不知道用代碼訪問哪個對象時,檢查一下 Err 都會打消這種疑慮。可以確定是哪個對象產生錯誤(Err.Source 中指定的對象),也可以確定是哪個對象將錯誤代碼放在 Err.Number

On Error GoTo 0 停止在當前過程中處理錯誤。即使過程中包含編號爲 0 的行,它也不把行 0 指定爲處理錯誤的代碼的起點。如果沒有 On Error GoTo 0 語句,在退出過程時,錯誤處理程序會自動關閉。

在錯誤未發生的時候,爲了防止錯誤處理程序代碼運行,請像在下段程序中那樣,在緊靠着錯誤處理程序的前面寫入 Exit Sub、Exit Function Exit Property 語句。

Sub InitializeMatrix(Var1, Var2, Var3, Var4)
   On Error GoTo ErrorHandler
   . . .
   Exit Sub
ErrorHandler:
   . . .
   Resume Next
End Sub

此處,錯誤處理程序代碼在 Exit Sub 語句之後,而在 End Sub 語句之前,從而與過程中的流程分開。錯誤處理程序代碼可以在程序中的任何地方寫入。

當對象作爲文件運行時,對象中未捕獲的錯誤都被返回控制應用程序。在開發環境中,如果設置了正確選項,未捕獲的錯誤只返回控制應用程序。請參考主應用程序的文檔的有關描述,從而得知,在調試時應該設置哪些選項、如何設置這些選項以及主機能否建立類。

如果建立一個訪問其它對象的對象,則應該着手處理從那些對象返回的未處理錯誤。如果無法處理這種錯誤,請將 Err.Number 中的錯誤代碼當作自己的一個錯誤,然後將錯誤回傳給對象的調用者。應該將錯誤代碼添加到 vbObjectError 常數上來指定這個錯誤。舉例來說,如果錯誤代碼爲 1052,則使用如下方法指定錯誤:

Err.Number = vbObjectError + 1052

注意 調用動態鏈接庫 (DLL) 期間產生的系統錯誤不會產生例外情況,也不會被 Visual Basic 的錯誤捕獲操作所捕獲。當調用 DLL 函數時,應該(根據 API 的詳細說明)檢查每一個返回值以確定是成功還是失敗,如果失敗,則檢查 Err 對象的 LastDLLError 屬性中的值。


On...GoSub、On...GoTo 語句

根據表達式的值,轉到特定行執行。

語法

On expression GoSub destinationlist

On expression GoTo destinationlist

On...GoSub On...GoTo 語句的語法具有以下幾個部分:

部分 描述
expression 必要參數。數值表達式,其運算結果應該是一個界於 0 到 255 之間的整數,包含 0 和 255。如果 expression 的計算結果不是一個整數,則它會先四捨五入爲一個整數。
destinationlist 必要參數。行號或行標籤的列表,之間要以逗號隔開。

說明

expression 的值會決定轉到 destinationlist 中的哪一行。如果 expression 的值小於 1 或大於列表的項目個數,則會產生下面的結果之一:

如果表達式的值
等於 0 控制權會轉移到 On...GoSubOn...GoTo 之後的語句。
大於串的項目個數 控制權會轉移到 On...GoSubOn...GoTo 之後的語句。
負數 會發生錯誤。
大於 255 會發生錯誤。

可以在同一個列表中混合使用行號和行標籤。在 On...GoSub On...GoTo 中也可隨意使用任意個行號和行標籤。但是,如果使用了太多的行標籤或行號,以至於在一行中放不下,那麼就必須在一行後使用>續行符來銜接到下一行。

提示 若要執行多重分支,Select Case 提供了一種結構化與適應性更強的方法。


Open 語句

能夠對文件輸入/輸出 (I/O)。

語法

Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength]

Open 語句的語法具有以下幾個部分:

部分 描述
pathname 必要。字符串表達式,指定文件名,該文件名可能還包括目錄、文件夾及驅動器。
mode 必要。關鍵字,指定文件方式,有 AppendBinaryInputOutput、或 Random 方式。如果未指定方式,則以 Random 訪問方式打開文件。
access 可選。關鍵字,說明打開的文件可以進行的操作,有 ReadWrite、或 Read Write 操作。
lock 可選。關鍵字,說明限定於其它進程打開的文件的操作,有 SharedLock ReadLock Write、和 Lock Read Write 操作。
filenumber 必要。一個有效的文件號,範圍在 1 到 511 之間。使用 FreeFile 函數可得到下一個可用的文件號。
reclength 可選。小於或等於 32,767(字節)的一個數。對於用隨機訪問方式打開的文件,該值就是記錄長度。對於順序文件,該值就是緩衝字符數。

說明

對文件做任何 I/O 操作之前都必須先打開文件。Open 語句分配一個緩衝區供文件進行 I/O 之用,並決定緩衝區所使用的訪問方式。

如果 pathname 指定的文件不存在,那麼,在用 AppendBinaryOutput、或 Random 方式打開文件時,可以建立這一文件。

如果文件已由其它進程打開,而且不允許指定的訪問類型,則 Open 操作失敗,而且會有錯誤發生。

如果 mode Binary 方式,則 Len 子句會被忽略掉。

重要BinaryInput Random 方式下可以用不同的文件號打開同一文件,而不必先將該文件關閉。在 Append Output 方式下,如果要用不同的文件號打開同一文件,則必須在打開文件之前先關閉該文件。


Option Base 語句

在模塊級別中使用,用來聲明數組下標的缺省下界。

語法

Option Base {0 | 1}

說明

由於下界的缺省設置是 0,因此無需使用 Option Base 語句。如果使用該語句,則必須寫在模塊的所有過程之前。一個模塊中只能出現一次 Option Base,且必須位於帶維數的數組聲明之前。

注意   Dim、Private、Public、ReDim 以及 Static 語句中的 To 子句提供了一種更靈活的方式來控制數組的下標。不過,如果沒有使用 To 子句顯式地指定下界,則可以使用 Option Base 將缺省下界設爲 1。使用 Array 函數或 ParamArray 關鍵字創建的數組的下界爲 0;Option BaseArrayParamArray 不起作用。

Option Base 語句隻影響位於包含該語句的模塊中的數組下界。


Option Compare 語句

在模塊級別中使用,用於聲明字符串比較時所用的缺省比較方法。

語法

Option Compare {Binary | Text | Database}

說明

如果使用,則 Option Compare 語句必須寫在模塊的所有過程之前。

Option Compare 語句爲模塊指定字符串比較的方法(Binary、Text Database)。如果模塊中沒有 Option Compare 語句,則缺省的文本比較方法是 Binary

Option Compare Binary 是根據字符的內部二進制表示而導出的一種排序順序來進行字符串比較。在 Microsoft Windows 中,排序順序由代碼頁確定。典型的二進制排序順序如下例所示:

A < B < E < Z < a < b < e < z < _ < _ < _ < _ < _ < ?

Option Compare Text 根據由系統國別確定的一種不區分大小寫的文本排序級別來進行字符串比較。當使用 Option Compare Text 對相同字符排序時,會產生下述文本排序級別:

(A=a) < ( _=_) < (B=b) < (E=e) < (_=_) < (Z=z) < (_=_) 

Option Compare Database 只能在 Microsoft Access 中使用。當需要字符串比較時,將根據數據庫的國別 ID 確定的排序級別進行比較。


Option Explicit 語句

在模塊級別中使用,強制顯式聲明模塊中的所有變量。

語法

Option Explicit

說明

如果使用,Option Explicit 語句必須寫在模塊的所有過程之前。

如果模塊中使用了 Option Explicit,則必須使用 Dim、Private、Public、ReDimStatic 語句來顯式聲明所有的變量。如果使用了未聲明的變量名在編譯時間會出現錯誤。

如果沒有使用 Option Explicit 語句,除非使用 Deftype 語句指定了缺省類型,否則所有未聲明的變量都是 Variant 類型的。

注意 使用 Option Explicit 可以避免在鍵入已有變量時出錯,在變量的範圍不是很清楚的代碼中使用該語句可以避免混亂。


Option Private 語句

在允許引用跨越多個工程的主機應用程序中使用 Option Private Module,可以防止在模塊所屬的工程外引用該模塊的內容。在不允許這種引用的主機應用程序中,例如,Visual Basic 的獨立方式版本,Option Private 就不起作用。

語法

Option Private Module

說明

如果使用 Option Private 語句,則必須是寫在模塊級別中的任何過程之前。

如果模塊中使用了 Option Private Module,則其公用部分(例如,在模塊級定義的變量,對象,以及用戶定義類型)在該模塊所屬的工程內仍是可用的,但對其它應用程序或工程則是不可用的。

注意 只有在支持同時加載多個工程,且允許在加載的工程間引用的主應用程序中可使用 Option Private。例如,Microsoft Excel 允許加載多個工程,Option Private Module 就可以用來限制跨工程的可見性。儘管 Visual Basic 允許加載多個工程,但在 Visual Basic 中是從不允許跨工程引用的。


Print # 語句

將格式化顯示的數據寫入順序文件中。

語法

Print #filenumber, [outputlist]

Print # 語句的語法具有以下幾個部分:

部分 描述
filenumber 必要。任何有效的文件號。
outputlist 可選。表達式或是要打印的表達式列表。

設置

outputlist 參數的設置如下:

[{Spc(n) | Tab[(n)]}] [expression] [charpos]

設置 描述
Spc(n) 用來在輸出數據中插入空白字符,而 n 指的是要插入的空白字符數。
Tab(n) 用來將插入點定位在某一絕對列號上,這裏,n 是列號。使用無參數的 Tab 將插入點定位在下一個打印區的起始位置。
expression 要打印的數值表達式或字符串表達式。
charpos 指定下一個字符的插入點。使用分號將插入點定位在上一個顯示字符之後。用 Tab(n) 將插入點定位在某一絕對的列號上,用無參數的 Tab 將插入點定位在下一個打印區的起始處。如果省略 charpos,則在下一行打印下一個字符。

說明

通常用 Line Input #Input 讀出 Print # 在文件中寫入的數據。

如果省略參數 outputlist,而且,filenumber 之後只含有一個列表分隔符,則將一空白行打印到文件中。多個表達式之間可用一個空白或一個分號隔開。空白與分號等效。

對於 Boolean 類型的數據,打印的是 True False。無論在什麼國別,都不將 True False 這兩個關鍵字翻譯出來。

使用操作系統所能夠辨認的標準短日期格式可將 Date 類型的數據寫入文件中。在未指定日期或時間部件或這些部件的設置爲零時,只將指定的部分寫入文件中。

如果 outputlist 的數據是 Empty,則不將任何數據寫入文件。但是,如果 outputlist 的數據是 Null,則將 Null 寫入文件。

對於 Error 類型的數據而言,輸出的數據看起來與 Error errorcode 一樣。而且無論在什麼地區,都不將 Error 關鍵字翻譯出來。

Print # 寫入文件的所有數據都是國際通用的;也就是說,可以正確利用十進制分隔符將這些數據格式化。

因爲 Print # 將數據的圖像寫入文件,所以必須將各項數據分隔開來,以便正確打印。如果使用無參數的 Tab 將打印位置移動到下一個打印區,則 Print # 也會將打印字段之間的空白寫入文件中。

注意 如果今後想用 Input # 語句讀出文件的數據,就要用 Write # 語句而不用 Print # 語句將數據寫入文件。因爲在使用 Write # 時,將數據域分界就可確保每個數據域的完整性,因此可用 Input # 再將數據讀出來。使用 Write # 還能確保任何地區的數據都被正確讀出。


Private 語句

在模塊級別中使用,用於聲明私有變量及分配存儲空間。

語法

Private [WithEvents] varname[([subscripts])] [As [New] type] [,[WithEvents] varname[([subscripts])] [As [New] type]] . . .

Private 語句的語法包含下面部分:

部分 描述
WithEvents 可選的。關鍵字,說明 varname 是用來響應由 ActiveX 對象所觸發的事件的對象變量。只有在類模塊中才是合法的。使用 WithEvents,可以定義任意個所需的單變量,但不能用 WithEvents 創建數組。NewWithEvents 不能一起使用。
varname 必需的。變量的名稱;遵循標準的變量命名約定。
subscripts 可選的。數組變量的維數;最多可以定義 60 維的多維數組。subscripts 參數的使用語法如下:
  [lower To] upper [,[lower To] upper] . . .
  如果不顯式指定 lower,則數組的下界由 Option Base 語句控制。如果沒有 Option Base 語句則下界爲 0。
New 可選的。使其可以隱式地創建對象的關鍵字。如果使用 New 聲明對象變量,則在第一次引用該變量時創建該對象的新實例,因此不必使用 Set 語句來對該對象引用賦值。New 關鍵字不能聲明任何內部數據類型的變量以及從屬對象的實例,也不能與 WithEvents 一起使用。
type 可選的。變量的數據類型;可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(對可變長的字符串)、String * length(對定長的字符串)、Object、Variant、用戶定義類型或對象類型。所聲明的每個變量都要一個單獨的 As type 子句。

說明

Private 變量只能在包含其聲明的模塊中使用。

可以使用 Private 語句聲明變量的數據類型。例如,下面的語句聲明瞭一個 Integer 類型的變量。

Private NumberOfEmployees As Integer

也可以使用 Private 語句來聲明變量的對象類型。下面的語句爲工作表的新實例聲明瞭一個變量。

Private X As New Worksheet

如果在定義對象變量時沒有使用 New 關鍵字,則在使用該變量之前,必須使用 Set 語句將一個已有的對象賦給該引用對象的變量。在賦值之前,所聲明的這個對象變量有一個特定值 Nothing,這個值表示該變量沒有指向任何對象的實例。

如果不指定數據類型或對象類型,且在模塊中沒有使用 Deftype 語句,則按缺省情況該變量爲 Variant 類型。

可以用帶空圓括號的 Private 語句來聲明動態數組,然後可以在過程內用 ReDim 語句來定義該數組的維數和元素。如果試圖在 PrivatePublic Dim 語句中重新定義一個已顯式定義了大小的數組的維數,就會發生錯誤。

當初始化變量時,數值變量被初始化爲 0,變長的字符串被初始化爲一個零長度的字符串 (""),而定長的字符串則用 0 填充。Variant 變量被初始化爲 Empty。用戶自定義類型的變量的每個元素作爲各自獨立的變量進行初始化。

注意 當在過程中使用 Private 語句時,通常將 Private 語句放在過程的開始。


Property Get 語句

聲明 Property 過程的名稱,參數以及構成其主體的代碼,該過程獲取一個屬性的值。

語法

[Public | Private | Friend] [Static] Property Get name [(arglist)] [As type]
[statements]
[name = expression]
[Exit Property]
[statements]
[name = expression]

End Property

Property Get 語句的語法包含下面部分:

部分 描述
Public 可選的。表示所有模塊的所有其它過程都可訪問 Property Get 過程。如果在包含 Option Private 的模塊中使用,則該過程在該工程外是不可使用的。
Private 可選的。表示只有包含其聲明的模塊的其它過程可以訪問該 Property Get 過程。
Friend 可選的。只能在類模塊中使用。表示該 Property Get 過程在整個工程中都是可見的,但對對象實例的控制者是不可見的。
Static 可選的。表示在調用之間保留該 Property Get 過程的局部變量的值。Static 屬性對在該 Property Get 過程外聲明變量不會產生影響,即使過程中也使用了這些變量。
name 必需的。Property Get 過程的名稱;遵循標準的變量命名約定,但不能與同一模塊中的 Property LetProperty Set 過程同名。
arglist 可選的。代表在調用時要傳遞給 Property Get 過程的參數的變量列表。多個變量則用逗號隔開。Property Get 過程中的每個參數的名稱和數據類型必須與相應 Property Let 過程(如果存在)中的參數一致。
type 可選的。該 Property Get 過程的返回值的數據類型;可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(除定長)、Object、Variant或任何用戶定義類型。任何類型的數組都不能作爲返回值,但包含數組的 Variant 可以作爲返回值。

Property Get 過程的返回值類型必須與相應的 Property Let 過程(如果有)的最後一個(有時是僅有的)參數的數據類型相同,該 Property Let 過程將其右邊表達式的值賦給屬性。

statements 可選的。Property Get 過程體中所執行的任何語句組。
expression 可選的。Property Get 語句所定義的過程返回的屬性值。

其中的 arglist 參數的語法及語法的各個部分如下:

[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue]

部分 描述
Optional 可選的。表示參數不是必需的。如果使用了該選項,則 arglist 中的後續參數都是可選的,而且必須都使用 Optional 關鍵字聲明。
ByVal 可選的。表示該參數按值傳遞。
ByRef 可選的。表示該參數按地址傳遞。ByRef 是 Visual Basic 的缺省選項。
ParamArray 可選的。只用於 arglist 的最後一個參數,指明最後這個參數是一個 Variant 元素的 Optional 數組。使用 ParamArray 關鍵字可以提供任意數目的參數。ParamArray 關鍵字不能與 ByVal、ByRef Optional 一起使用。
varname 必需的。代表參數的變量名稱;遵循標準的變量命名約定。
type 可選的。傳遞給該過程的參數的數據類型;可以是 Byte、BooleanInteger、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(只支持變長)、ObjectVariant。如果參數不是 Optional,則也可以是用戶自定義的類型,或對象類型。
defaultvalue 可選的。任何常數或常量表達式。只在 Optional 參數時是合法的。如果類型爲 Object,則顯式的缺省值只能是 Nothing

說明

如果沒有使用 Public,Private Friend 顯式指定,則 Property 過程缺省爲公用。如果沒有使用 Static,則在調用之後不會保留局部變量的值。Friend 關鍵字只能在類模塊中使用。Friend 過程可以被工程中的任何模塊的過程訪問。Friend 過程不會在其父類的類型庫中出現,且 Friend 過程不能被後期綁定。

所有的可執行代碼都必須屬於某個過程。不能在別的 Property、Sub Function 過程中定義 Property Get 過程。

Exit Property 語句使執行立即從一個 Property Get 過程中退出。程序接着從調用該 Property Get 過程的語句下一條語句開始執行。在 Property Get 過程中的任何位置都可以有 Exit Property 語句。

Property Get 過程與 SubProperty Let 過程的相似之處是:Property Get 過程是一個可以獲取參數,執行一系列語句,以及改變其參數的值的獨立過程,而與 SubProperty Let 過程不同的是:當要返回屬性的值時,可以在表達式的右邊使用 Property Get 過程,這與使用 Function 或屬性名的方式一樣。


Property Let 語句

聲明 Property Let 過程的名稱,參數以及構成其主體的代碼,該過程給一個屬性賦值。

語法

[Public | Private | Friend] [Static] Property Let name ([arglist,] value)
[statements]
[Exit Property]
[statements]

End Property

Property Let 語句的語法包含下面部分:

部分 描述
Public 可選的。表示所有模塊的所有其它過程都可訪問該 Property Let 過程。如果在包含 Option Private 的模塊中使用,則這個過程在該工程外是不可使用的。
Private 可選的。表示只有在包含其聲明的模塊的其它過程中可以訪問該 Property Let 過程。
Friend 可選的。只能在類模塊中使用。表示該 Property Let 過程在整個工程中都是可見的,但對於對象實例的控制者是不可見的。
Static 可選的。表示在調用之間將保留 Property Let 過程的局部變量的值。Static 屬性對在該 Property Let 過程外聲明的變量不會產生影響,即使過程中也使用了這些變量。
name 必需的。Property Let 過程的名稱;遵循標準的變量命名約定,但不能與同一模塊中的 Property GetProperty Set 過程同名。
arglist 可選的。代表在調用時要傳遞給 Property Let 過程的參數的變量列表。多個變量則用逗號隔開。Property Let 過程中的每個參數的名稱和數據類型必須與 Property Get 過程中的相應參數一致。
value 必需的。指用於給屬性賦值的變量。當調用該過程時,這個參數出現在調用表達式的右邊。value 的數據類型必須和相應的 Property Get 過程的返回值類型一致。
statements 可選的。Property Let 過程中執行的任何語句組。

其中的 arglist 參數的語法和語法的各個部分如下:

[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue]

部分 描述
Optional 可選的。表示參數不是必需的。如果使用了該選項,則 arglist 中的後續參數都必須是可選的,而且必須都使用 Optional 關鍵字聲明。注意,一個 Property Let 表達式的右邊是不可能爲 Optional 的。
ByVal 可選的。表示該參數按值傳遞。
ByRef 可選的。表示該參數按地址傳遞。ByRef 是 Visual Basic 的缺省選項。
ParamArray 可選的。只用於 arglist 的最後一個參數,指明最後這個參數是一個 Variant 元素的 Optional 數組。使用 ParamArray 關鍵字可以提供任意數目的參數。ParamArray 關鍵字不能與 ByVal、ByRef Optional 一起使用。
varname 必需的。代表參數變量的名稱;遵循標準的變量命名約定。
type 可選的。傳遞給該過程的參數的數據類型;可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(只支持變長)、Object 或 Variant。如果參數不是 Optional,則也可以是用戶定義類型,或對象類型。
defaultvalue 可選的。任何常數或常數表達式。只在 Optional 參數時是合法的。如果類型爲 Object,則顯式的缺省值只能是 Nothing

注意 每個 Property Let 語句必須爲其所定義的過程定義至少一個參數。當這個 Property Let 語句所定義的過程被調用時,該參數(如果有多個參數則指最後一個)就包含了將賦給屬性的實際值。該參數就是前述語法中的 value

說明

如果沒有使用 Public、Private Friend 顯式指定,則 Property 過程缺省爲公用。如果沒有使用 Static,則不會在調用之後保留局部變量的值。Friend 關鍵字只能在類模塊中使用。不過 Friend 過程可以被工程中的任何模塊的過程訪問。Friend 過程不會在其父類的類型庫中出現,且 Friend 過程不能被後期綁定。

所有的可執行代碼都必須屬於某個過程。不能在別的 Property、Sub Function 過程中定義 Property Let 過程。

Exit Property 語句使執行立即從一個 Property Let 過程中退出。程序接着從調用該 Property Let 過程的語句下一條語句開始執行。在 Property Let 過程的任何位置都可以有 Exit Property 語句。

Property Let 過程與 FunctionProperty Get 過程的相似之處是:Property Let 過程是一個可以獲取參數,執行一系列語句,以及改變其參數值的獨立過程。而與 FunctionProperty Get 過程不同的是:這兩個過程都有返回值,而 Property Let 過程只能用於屬性表達式或 Let 語句的左邊。


Property Set 語句

聲明 Property 過程的名稱,參數以及構成其主體的代碼,該過程設置一個對象引用。

語法

[Public | Private | Friend] [Static] Property Set name ([arglist,] reference)
[statements]
[Exit Property]
[statements]

End Property

Property Set 語句的語法包含下面部分:

部分 描述
Optional 可選的。表示調用者可以提供或不提供該參數。
Public 可選的。表示所有模塊的所有其它過程都可訪問這個 Property Set 過程。如果在包含 Option Private 的模塊中使用,則這個過程在該工程外是不可使用的。
Private 可選的。表示只有包含其聲明的模塊的其它過程可以訪問該 Property Set 過程。
Friend 可選的。只能在類模塊中使用。表示該 Property Set 過程在整個工程中都是可見的,但對對象實例的控制者是不可見的。
Static 可選的。表示在調用之間保留 Property Set 過程的局部變量的值。Static 屬性對在該 Property Set 外聲明的變量不會產生影響,即使過程中也使用了這些變量。
name 必需的。Property Set 過程的名稱;遵循標準的變量命名約定,但不能與同一模塊中的 Property GetProperty Let 過程同名。
arglist 可選的。代表在調用時要傳遞給 Property Set 過程的參數的變量列表。對於多個變量則用逗號隔開。
reference 必需的。對象引用賦值的右邊所使用的包含對象引用的變量。
statements 可選的。Property 過程體中所執行的任何語句組。

其中的 arglist 參數的語法以及語法各個部分如下:

[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue]

部分 描述
Optional 可選的。表示參數不是必需的。如果使用了該選項,則 arglist 中的後續參數都必須是可選的,而且必須都使用 Optional 關鍵字聲明。注意:Property Set 表達式的右邊不可能是 Optional
ByVal 可選的。表示該參數按值傳遞。
ByRef 可選的。表示該參數按地址傳遞。ByRef 是 Visual Basic 的缺省選項。
ParamArray 可選的。只用於 arglist 的最後一個參數,指明最後這個參數是一個 Variant 元素的 Optional 數組。使用 ParamArray 關鍵字可以提供任意數目的參數。ParamArray 關鍵字不能與 ByVal、ByRef Optional 一起使用。
varname 必需的。代表參數的變量的名稱;遵循標準的變量命名約定。
type 可選的。傳遞給該過程的參數的數據類型;可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(只支持變長)、Object 或 Variant。如果參數不是 Optional,則也可以是用戶定義類型,或對象類型。
defaultvalue 可選的。任何常數或常數表達式。只在 Optional 參數時是合法的。如果類型爲 Object,則顯式的缺省值只能是 Nothing

注意 每個 Property Set 語句必須爲其所定義的過程定義至少一個參數。當 Property Set 語句所定義的過程被調用時,這個參數(如果有多個參數則指最後一個)就包含了將賦給屬性的實際的對象引用。這個參數就是前述語法中的 reference。它不能是 Optional

說明

如果沒有使用 Public、Private Friend 顯式指定,則 Property 過程按缺省情況是公用的。如果沒有使用 Static,則在調用之後不會保留局部變量的值。Friend 關鍵字只能在類模塊中使用。不過 Friend 過程可以被工程中的任何模塊的過程訪問。Friend 過程不會在其父類的類型庫中出現,且 Friend 過程不能被後期綁定。

所有的可執行代碼都必須屬於某個過程。不能在別的 Property、Sub Function 過程中定義 Property Set 過程。

Exit Property 語句使執行立即從一個 Property Set 過程中退出。程序接着從調用該 Property Set 過程的語句下一條語句執行。在 Property Set 過程的任何位置都可以有 Exit Property 語句。

Property Set 過程與 FunctionProperty Get 過程的相似之處是:它們都是一個可以獲取參數,執行一系列語句,以及改變其參數的值的獨立過程。而與 FunctionProperty Get 過程不同的是:這兩個過程都有返回值,而 Property Set 過程只能用於對象引用賦值(Set 語句)的左邊。


Public 語句

在模塊級別中使用,用於聲明公用變量和分配存儲空間。

語法

Public [WithEvents] varname[([subscripts])] [As [New] type] [,[WithEvents] varname[([subscripts])] [As [New] type]] . . .

Public 語句的語法包含下面部分:

部分 描述
WithEvents 可選的。關鍵字,說明 varname 是用來響應由 ActiveX 對象觸發的事件的對象變量。只有在類模塊中才是合法的。使用 WithEvents,可以定義任意個所需的單個變量,但不能用 WithEvents 創建數組。NewWithEvents 不能一起使用。
varname 必需的。變量的名稱;遵循標準的變量命名約定。
subscripts 可選的。數組變量的維數;最多可以定義 60 維的多維數組。subscripts 參數使用下面的語法:
  [lower To] upper [,[lower To] upper] . . .
  如果不顯式指定 lower,則數組的下界由 Option Base 語句控制。如果沒有 Option Base 語句則下界爲 0。
New 可選的。用它可以隱式地創建對象的關鍵字。如果使用 New 聲明對象變量,則在第一次引用該變量時創建該對象的新實例,因此不必使用 Set 語句來對該對象引用賦值。New 關鍵字不能用來聲明任何內部數據類型的變量以及從屬對象的實例,也不能與 WithEvents 一起使用。
type 可選的。變量的數據類型;可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(對變長的字符串)、String * length(對定長的字符串)、Object或 Variant,用戶定義類型,或對象類型。所聲明的每個變量都要有一個單獨的 As type 子句。

說明

Public 語句聲明的變量在所有應用程序的所有沒有使用 Option Private Module 的模塊的任何過程中都是可用的;若該模塊使用了 Option Private Module,則該變量只是在其所屬工程中是公用的。

注意 不能在類模塊中使用 Public 語句來聲明一個定長的字符串變量。

使用 Public 語句可以聲明變量的數據類型。例如,下面的語句聲明瞭一個 Integer 類型的變量。

Public NumberOfEmployees As Integer

也可以使用 Public 語句來聲明變量的對象類型。下面的語句爲工作表的新實例聲明瞭一個變量。

Public X As New Worksheet

如果在定義對象變量時沒有使用 New 關鍵字,則在使用該變量之前,必須使用 Set 語句將一個已有的對象賦給這個引用對象的變量。在被賦值之前,所聲明的這個對象變量有一個特定值 Nothing,這個值表示該變量沒有指向任何對象的實例。

可以用帶空圓括號的 Public 語句來聲明動態數組。在聲明瞭動態數組之後,可以在過程內用 ReDim 語句來定義該數組的維數和元素。如果試圖在 Private、Public Dim 語句中重定義一個已被顯式定義了大小的數組的維數,就會發生錯誤。

如果不指定數據類型或對象類型,且在模塊中沒有使用 Deftype 語句,則按缺省情況該變量爲 Variant 類型。

當初始化變量時,數值變量被初始化爲 0,變長的字符串被初始化爲一個零長度的字符串 (""),而定長的字符串則用 0 填充。Variant 變量被初始化爲 Empty。用戶自定義類型的變量的每個元素都作爲各自獨立的變量進行初始化。


Put 語句

將一個變量的數據寫入磁盤文件中。

語法

Put [#]filenumber, [recnumber], varname

Put 語句的語法具有以下幾個部分:

部分 描述
filenumber 必要。任何有效的文件號。
recnumber 可選。Variant (Long)。記錄號(Random 方式的文件)或字節數(Binary 方式的文件),指明在此處開始寫入。
varname 必要。包含要寫入磁盤的數據的變量名。

說明

通常用 GetPut 寫入的文件數據讀出來。

文件中的第一個記錄或字節位於位置 1,第二個記錄或字節位於位置 2,依此類推。如果省略 recnumber,則將上一個 GetPut 語句之後的(或上一個 Seek 函數指出的)下一個記錄或字節寫入。所有用於分界的逗號都必須羅列出來,例如:

Put #4,,FileBuffer

下列規則適用於以 Random 方式打開的文件:

  • 如果已寫入的數據的長度小於 Open 語句的 Len 子句指定的長度,則 Put 以記錄長度爲邊界寫入隨後的記錄。記錄終點與下一個記錄起點之間的空白將用現有文件緩衝區內的內容填充。因爲填入的數據量無法確定,所以一般說來,最好設法使記錄的長度與寫入的數據長度一致。如果寫入的數據長度大於由 Open 語句的 Len 子句所指定的長度,就會導致錯誤發生。

  • 如果寫入的變量是一個可變長度的字符串,則 Put 先寫入一個含有字符串長度的雙字節描述符,然後再寫入變量。Open 語句的 Len 子句所指定的記錄長度至少要比實際字符串的長度多兩個字節。

  • 如果寫入的變量是數值類型的 Variant Put 先寫入兩個字節來辨認 Variant VarType,然後才寫入變量。例如,當寫入 VarType 3 的 Variant 時,Put 會寫入六個字節:其中,前兩個字節辨認出 Variant VarType 3 (Long),後四個字節則包含 Long 類型的數據。Open 語句的 Len 子句所指定的記錄長度必須至少比儲存變量所需的實際字節多兩個字節。

注意   Put 語句可用來將一個 Variant 數組寫入磁盤,但不能用來將包含數組的標量 Variant 寫入磁盤。Put 也不能用來將對象寫入磁盤。

  • 如果寫入的變量是 VarType 8 (String) 的 Variant,則 Put 先寫入兩個字節來辨認 VarType,接下來的兩個字節則指出字符串的長度,然後再寫入字符串數據。Open 語句的 Len 子句所指定的記錄長度必須至少比實際的字符串長度多四個字節。

  • 如果寫入的變量是動態數組,則 Put 寫入一個描述符,其長度等於 2 加上 8 乘以維數,即 2 + 8 * NumberOfDimensionsOpen 語句的 Len 子句所指定的記錄長度必須大於或等於爲讀出數組數據和數組描述符所需要的所有字節數總和。例如,在將數組寫入磁盤時,下列數組聲名需要 118 個字節的空間:
    Dim MyArray(1 To 5,1 To 10) As Integer
    
  • 這 118 個字節的分配情況如下:18 個字節用於描述符 (2 + 8 * 2),100 個字節用於數據 (5 * 10 * 2)。

  • 如果寫入的變量是大小固定的數組,則 Put 只寫入數據。它不將描述符寫入磁盤。

  • 如果寫入的變量是任何其他類型的變量(不是可變長度的字符串或 Variant£©,則 Put 只寫入變量數據。Open 語句的 Len 子句所指定的記錄長度必須大於或等於要讀出的數據長度。

  • Put 寫入用戶定義類型的元素時,除了不在元素之間進行填充外,好象是單獨地寫入每一個元素。在磁盤上,有一個描述符位於 Put 寫入的用戶定義的類型的動態數組之前,其長度等於 2 加上 8 乘以維數,即 2 + 8 * NumberOfDimensionsOpen 語句中的 Len 子句所指定的記錄長度必須大於或等於爲寫入各個元素(包括任何數組及其描述符在內)所需的全部字節數總和。

對於以 Binary 方式打開的文件,上述所有 Random 規則都適用,除了:

  • Open 語句中的 Len 子句不起作用。Put 語句連續地將所有變量寫入磁盤;也就是說,兩個記錄之間沒有任何填充。

  • 對於任何不屬於用戶定義的類型的數組,Put 只寫入數據。它不會寫入描述符。

  • 對於非用戶定義的類型的可變長度字符串,Put 將其直接寫入,而無須有雙字節描述符。寫入的字節數等於字符串所包含的字符數。例如,下列語句將十個字節寫入文件號爲 1 的文件中:
    VarString$ = String$(10, )
    Put #1,,VarString$

RaiseEvent 語句

引發在一個類、窗體、或者文檔中的模塊級中聲明的一個事件。

語法

RaiseEvent eventname [(argumentlist)]

必需的 eventname 是在模塊 中聲明的,並且符合 Basic 變量命名約定的一個事件的名稱。

RaiseEvent 語句的語法有如下部分:

部分 描述
Eventname 必需的。所引發的事件的名稱。
Argumentlist 可選的。用逗號分隔的變量、數組,或者表達式的列表。argumentlist 必須用圓括號括起來。如果沒有參數,則圓括號必須被忽略。

說明

如果在事件被引發的模塊內該事件沒有被聲明,就會發生一個錯誤。下面這個程序片段說明了一個事件的聲明以及一個引發該事件的過程。

' 在類模塊的模塊級聲明一個事件
Event LogonCompleted (UserName as String)

Sub
   ' 引發該事件。
   RaiseEvent LogonCompleted ("AntoineJan")
End Sub

如果在 RaiseEvent 中該事件沒有參數,包括空的圓括號,則對該事件的調用就會導致一個錯誤。不能使用 RaiseEvent 來引發在模塊中沒有明確定義的事件。例如,如果一個窗體有一個 Click 事件,則不能使用 RaiseEvent 來引發該窗體的 Click 事件。如果在窗體模塊 中聲明瞭一個 Click 事件,則它將覆蓋窗體自己的 Click 事件。仍然可以使用調用該事件的正常語法來調用該窗體的 Click 事件,但是不能使用 RaiseEvent 語句。

事件的引發是根據連接建立的順序來進行的。因爲事件可以有 ByRef 參數,所以後來連接的進程可能接收已經被一個更早的事件處理程序更改的參數。


Randomize 語句

初始化隨機數生成器。

語法

Randomize [number]

可選的 number 參數是 Variant 或任何有效的數值表達式。

說明

Randomize numberRnd 函數的隨機數生成器初始化,該隨機數生成器給 number 一個新的種子值。如果省略 number,則用系統計時器返回的值作爲新的種子值。

如果沒有使用 Randomize,則(無參數的)Rnd 函數使用第一次調用 Rnd 函數的種子值。

注意 若想得到重複的隨機數序列,在使用具有數值參數的 Randomize 之前直接調用具有負參數值的 Rnd。使用具有同樣 number 值的 Randomize 是不會得到重複的隨機數序列的。


ReDim 語句

在過程級別中使用,用於爲動態數組變量重新分配存儲空間。

語法

ReDim [Preserve] varname(subscripts) [As type] [, varname(subscripts) [As type]] . . .

ReDim 語句的語法包括以下幾個部分:

部分 描述
Preserve 可選的。關鍵字,當改變原有數組最末維的大小時,使用此關鍵字可以保持數組中原來的數據。
varname 必需的。變量的名稱;遵循標準的變量命名約定。
subscripts 必需的。數組變量的維數;最多可以定義 60 維的多維數組。subscripts 參數使用下面的語法:
  [lower To] upper [,[lower To] upper] . . .
  如果不顯式指定 lower,則數組的下界由 Option Base 語句控制。如果沒有 Option Base 語句則下界爲 0。
type 可選的。變量的數據類型;可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(對變長的字符串)、String * length(對定長的字符串)、Object、Variant、用戶定義類型或對象類型。所聲明的每個變量都要有一個單獨的 As type 子句。對於包含數組的 Variant 而言,type 描述的是該數組的每個元素的類型,不能將此 Variant 改爲其它類型。

說明

ReDim 語句用來定義或重定義原來已經用帶空圓括號(沒有維數下標)的 Private、PublicDim 語句聲明過的動態數組的大小。

可以使用 ReDim 語句反覆地改變數組的元素以及維數的數目,但是不能在將一個數組定義爲某種數據類型之後,再使用 ReDim 將該數組改爲其它數據類型,除非是 Variant 所包含的數組。如果該數組確實是包含在某個 Variant 中,且沒有使用 Preserve 關鍵字,則可以使用 As type 子句來改變其元素的類型,但在使用了此關鍵字的情況下,是不允許改變任何數據類型的。

如果使用了 Preserve 關鍵字,就只能重定義數組最末維的大小,且根本不能改變維數的數目。例如,如果數組就是一維的,則可以重定義該維的大小,因爲它是最末維,也是僅有的一維。不過,如果數組是二維或更多維時,則只有改變其最末維才能同時仍保留數組中的內容。下面的示例介紹瞭如何在爲已有的動態數組增加其最末維大小的同時而不清除其中所含的任何數據。

ReDim X(10, 10, 10)
. . .
ReDim Preserve X(10, 10, 15)

同樣地,在使用 Preserve 時,只能通過改變上界來改變數組的大小;改變下界則會導致錯誤。

如果將數組改小,則被刪除的元素中的數據就會丟失。如果按地址將數組傳遞給某個過程,那麼不要在該過程內重定義該數組的各維的大小。

在初始化變量時,數值變量被初始化爲 0,變長的字符串被初始化爲一個零長度的字符串 (""),而定長的字符串則用 0 填充。Variant 變量被初始化爲 Empty。用戶自定義類型的變量的每個元素作爲各自獨立的變量進行初始化。在使用引用對象的變量之前,必須使用 Set 語句將一個已有的對象賦給該變量。在被賦值之前,所聲明的對象變量有一個特定值 Nothing,這個值表示該變量沒有指向任何對象的實例。

注意 如果 ReDim 語句所使用的變量在模塊級別或過程級別不存在,則該語句就相當於一個聲明語句。如果此後在一個更廣的範圍內又創建了同名的變量,即使使用了 Option ExplicitReDim 也將使用後聲明的這個變量,且不會導致編譯錯誤。爲了避免這種衝突,就不應把 ReDim 作爲聲明語句使用,而只應作爲重定義數組大小的語句。

注意 要改變 Variant 所包含的數組的大小,必須在試圖改變其數組大小之前顯式聲明該 Variant 變量。


Rem 語句

用來在程序中包含註釋。

語法

Rem comment

也可以使用如下語法:

' comment

comment 參數是可選的,指要包括的任何註釋文本。在 Rem 關鍵字與 comment 之間要加一個空格。

說明

如果使用行號或行標籤,則可以從 GoToGoSub 語句轉到一個 Rem 語句行。程序會從該 Rem 語句下面的第一條可執行語句繼續執行。如果在其它語句行後使用 Rem 關鍵字,則必須使用冒號 (:) 與語句隔開。

可以用一個撇號 (') 來代替 Rem 關鍵字。若使用撇號,則在其它語句行使用時不必加冒號。


Reset 語句

關閉所有用 Open 語句打開的磁盤文件。

語法

Reset

說明

Reset 語句關閉 Open 語句打開的所有活動文件,並將文件緩衝區的所有內容寫入磁盤。


Resume 語句

在錯誤處理程序結束後,恢復原有的運行。

語法

Resume [0]

Resume Next

Resume line

Resume 語句的語法可以具有以下任何一種形式:

語句 描述
Resume 如果錯誤和錯誤處理程序出現在同一個過程中,則從產生錯誤的語句恢復運行。如果錯誤出現在被調用的過程中,則從最近一次調用包含錯誤處理程序的過程的語句處恢復運行。
Resume Next 如果錯誤和錯誤處理程序出現在同一個程序中,則從緊隨產生錯誤的語句的下個語句恢復運行。如果錯誤發生在被調用的過程中,則對最後一次調用包含錯誤處理程序的過程的語句(或 On Error Resume Next 語句),從緊隨該語句之後的語句處恢復運行。
Resume line 在必要的 line 參數指定的 line 處恢復運行。line 參數是行標籤或行號,必須和錯誤處理程序在同一個過程中。

說明

在錯誤處理程序之外的任何地方使用 Resume 語句都會導致錯誤發生。


RmDir 語句

刪除一個存在的目錄或文件夾。

語法

RmDir path

必要的 path 參數是一個字符串表達式,用來指定要刪除的目錄或文件夾。path 可以包含驅動器。如果沒有指定驅動器,則 RmDir 會在當前驅動器上刪除目錄或文件夾。

說明

如果想要使用 RmDir 來刪除一個含有文件的目錄或文件夾,則會發生錯誤。在試圖刪除目錄或文件夾之前,先使用 Kill 語句來刪除所有文件。


RSet 語句

在一字符串變量中將一字符串往右對齊。

語法

RSet stringvar = string

RSet 語句的語法有下面這些部分:

部分 說明
stringvar 必要參數。爲字符串變量名。
String 必要參數。在 stringvar 內想往右對齊的字符串表達式。

說明

如果 stringvar string 長,Rset 會將 stringvar 中空餘的字符以空白代替,直至字符串開頭。

注意 RSet 不能用於用戶定義類型。


SaveSetting 語句

在 Windows 註冊表中保存或建立應用程序項目。

語法

SaveSetting appname, section, key, setting

SaveSetting 語句的語法具有下列命名參數:

部分 描述

appname 必要。字符串表達式,包含應用程序或工程的名稱,對這些應用程序或工程使用設置
section 必要。字符串表達式,包含區域名稱,在該區域保存註冊表項設置。
key 必要。字符串表達式,包含將要保存的註冊表項設置的名稱。
setting 必要。表達式,包含 key 的設置值。

說明

如果無論如何也不能保存註冊表項設置,則將導致錯誤發生。


Seek 語句

Open 語句打開的文件中,設置下一個讀/寫操作的位置。

語法

Seek [#]filenumber, position

Seek 語句的語法具有以下幾個部分:

部分 描述
filenumber 必要。任何有效的文件號。
position 必要。介於 1 - 2,147,483,647 之間的數字,指出下一個讀寫操作將要發生的位置。

說明

GetPut 語句中指定的記錄號將覆蓋由 Seek 語句指定的文件位置。

若在文件結尾之後進行 Seek 操作,則進行文件寫入的操作會把文件擴大。如果試圖對一個位置爲負數或零的文件進行 Seek 操作,則會導致錯誤發生。


Select Case 語句

根據表達式的值,來決定執行幾組語句中的其中之一。

語法

Select Case testexpression
[Case expressionlist-n
[statements-n]] ...
[Case Else
[elsestatements]]

End Select

Select Case 語句的語法具有以下幾個部分:

部分 描述
testexpression 必要參數。任何數值表達式或字符串表達式。
expressionlist-n 如果有 Case 出現,則爲必要參數。其形式爲 expressionexpression To expressionIs comparisonoperator expression的一個或多個組成的分界列表To 關鍵字可用來指定一個數值範圍。如果使用 To 關鍵字,則較小的數值要出現在 To 之前。使用 Is 關鍵字時,則可以配合比較運算符(除 IsLike 之外來指定一個數值範圍。如果沒有提供,則 Is 關鍵字會被自動插入。
statements-n 可選參數。一條或多條語句,當 testexpression 匹配expressionlist-n中的任何部分時執行。
elsestatements 可選參數。一條或多條語句,當 testexpression 不匹配 Case 子句的任何部分時執行。

說明

如果 testexpression 匹配某個 Case expressionlist 表達式, 則在 Case 子句之後,直到下一個 Case 子句的 statements 會被執行;如果是最後一個子句,則會執行到 End Select。然後控制權會轉移到 End Select 之後的語句。如果 testexpression 匹配一個以上的 Case 子句中的 expressionlist 表達式,則只有第一個匹配後面的語句會被執行。

Case Else 子句用於指明 elsestatements,當 testexpression 和所有的 Case 子句中的 expressionlist 都不匹配時,則會執行這些語句。雖然不是必要的,但是在 Select Case 區塊中,最好還是加上 Case Else 語句來處理不可預見的 testexpression 值。如果沒有 Case expressionlist 匹配 testexpression,而且也沒有 Case Else 語句,則程序會從 End Select 之後的語句繼續執行。

可以在每個 Case 子句中使用多重表達式或使用範圍,例如,下面的語句是正確的:

Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber

注意   Is 比較運算符和使用在 Select Case 語句中的 Is 關鍵字並不相同。

也可以針對字符串指定範圍和多重表達式。在下面的例子中,Case 所匹配的字符串爲:等於 everything、按英文字母順序落入從 nutssoup 之間的字符串、以及 TestItem 所代表的當前值。

Case "everything", "nuts" To "soup", TestItem

Select Case 語句也可以是嵌套的。但每個嵌套的 Select Case 語句必須要有相應的 End Select 語句。


SendKeys 語句

將一個或多個按鍵消息發送到活動窗口,就如同在鍵盤上進行輸入一樣。

語法

SendKeys string[, wait]

SendKeys 語句的語法具有以下幾個命名參數:

部分 描述
string 必需的。字符串表達式,指定要發送的按鍵消息。
Wait 可選的。指定等待方式的 [email protected] 值。如果爲 False(缺省值),則控件在按鍵發送出去之後立刻返回到過程。如果爲 True,則按鍵消息必須在控件返回到過程之前加以處理。

說明

每個按鍵由一個或多個字符表示。爲了指定單一鍵盤字符,必須按字符本身的鍵。例如,爲了表示字母 A,可以用 "A" 作爲 string。爲了表示多個字符,就必須在字符後面直接加上另一個字符。例如,要表示 A、B 及 C,可用 "ABC" 作爲 string

SendKeys 來說,加號 (+)、插入符 (^)、百分比符號 (%)、上劃線 (~) 及圓括號 ( ) 都具有特殊意義。爲了指定上述任何一個字符,要將它放在大括號 ({}) 當中。例如,要指定正號,可用 {+} 表示。方括號 ([ ]) 對 SendKeys 來說並不具有特殊意義,但必須將它們放在大括號中。在其它應用程序中,方括號有特殊意義,在出現動態數據交換 (DDE) 的時候,它可能具有重要意義。爲了指定大括號字符,請使用 {{} 及 {}}。

爲了在按下按鍵時指定那些不顯示的字符,例如 ENTER 或 TAB 以及那些表示動作而非字符的按鍵,請使用下列代碼:

按鍵 代碼
BACKSPACE {BACKSPACE}, {BS}, 或 {BKSP}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DEL or DELETE {DELETE} 或 {DEL}
DOWN ARROW {DOWN}
END {END}
ENTER {ENTER}~
ESC {ESC}
HELP {HELP}
HOME {HOME}
INS or INSERT {INSERT} 或 {INS}
LEFT ARROW {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
PRINT SCREEN {PRTSC}
RIGHT ARROW {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
UP ARROW {UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}

爲了指定那些與 SHIFT、CTRL 及 ALT 等按鍵結合的組合鍵,可在這些按鍵碼的前面放置一個或多個代碼,這些代碼列舉如下:

按鍵 代碼
SHIFT +
CTRL ^
ALT %

爲了說明在按下其它按鍵時應同時按下 SHIFT、CTRL、及 ALT 的任意組合鍵,請把那些按鍵的碼放在括號當中。例如,爲了說明按下 E 與 C 的時候同時按下 SHIFT 鍵,請使用 "+(EC)"。爲了說明在按下 E 的時候同時按下 SHIFT 鍵,但接着按 C 而不按 SHIFT,則使用 "+EC"。

爲了指定重複鍵,使用 {key number} 的形式。必須在 keynumber 之間放置一個空格。例如,{LEFT 42} 意指 42 次按下 LEFT ARROW 鍵;{h 10} 則是指 10 次按下 H 鍵。

注意 不能用 SendKeys 將按鍵消息發送到這樣一個應用程序,這個應用程序並沒有被設計成在 Microsoft Windows 中運行。Sendkeys 也無法將 PRINT SCREEN 按鍵 {PRTSC} 發送到任何應用程序。


Set 語句

將對象引用賦給變量或屬性。

語法

Set objectvar = {[New] objectexpression | Nothing}

Set 語句的語法包含下面部分:

部分 描述
objectvar 必需的。變量或屬性的名稱,遵循標準變量命名約定。
New 可選的。通常在聲明時使用 New,以便可以隱式創建對象。如果 New Set 一起使用,則將創建該類的一個新實例。如果 objectvar 包含了一個對象引用,則在賦新值時釋放該引用。不能使用 New 關鍵字來創建任何內部數據類型的新實例,也不能創建從屬對象。
objectexpression 必需的。由對象名,所聲明的相同對象類型的其它變量,或者返回相同對象類型的函數或方法所組成的表達式。
Nothing 可選的。斷絕 objectvar 與任何指定對象的關聯。若沒有其它變量指向 objectvar 原來所引用的對象,將其賦爲 Nothing 會釋放該對象所關聯的所有系統及內存資源。

說明

爲確保合法,objectvar 必須是與所賦對象相一致的對象類型。

Dim、Private、Public、ReDim以及 Static 語句都只聲明瞭引用對象的變量。在用 Set 語句將變量賦爲特定對象之前,該變量並沒有引用任何實際的對象。

下面的示例說明了如何使用 Dim 來聲明 Form1 類型的數組。Form1 實際上還沒有實例。然後使用 Set 將新創建的 Form1 的實例的引用賦給 myChildForms 變量。在 MDI 應用程序中可以使用這些代碼來創建子窗體。

Dim myChildForms(1 to 4) As Form1
Set myChildForms(1) = New Form1
Set myChildForms(2) = New Form1
Set myChildForms(3) = New Form1
Set myChildForms(4) = New Form1

通常,當使用 Set 將一個對象引用賦給變量時,並不是爲該變量創建該對象的一份副本,而是創建該對象的一個引用。可以有多個對象變量引用同一個對象。因爲這些變量只是該對象的引用,而不是對象的副本,因此對該對象的任何改動都會反應到所有引用該對象的變量。不過,如果在 Set 語句中使用 New 關鍵字,那麼實際上就會新建一個該對象的實例。


SetAttr 語句

爲一個文件設置屬性信息。

語法

SetAttr pathname, attributes

SetAttr 語句的語法含有以下這些命名參數:

部分 描述
pathname 必要參數。用來指定一個文件名的字符串表達式,可能包含目錄或文件夾、以及驅動器。
Attributes 必要參數。常數或數值表達式,其總和用來表示文件的屬性。

設置值

attributes 參數設置可爲:

常數 描述
vbNormal 0 常規(缺省值)
VbReadOnly 1 只讀。
vbHidden 2 隱藏。
vbSystem 4 系統文件
vbArchive 32 上次備份以後,文件已經改變

注意 這些常數是由 VBA 所指定的,在程序代碼中的任何位置,可以使用這些常數來替換真正的數值。

說明

如果想要給一個已打開的文件設置屬性,則會產生運行時錯誤。


Static 語句

在過程級別中使用,用於聲明變量並分配存儲空間。在整個代碼運行期間都能保留使用 Static 語句聲明的變量的值。

語法

Static varname[([subscripts])] [As [New] type] [, varname[([subscripts])] [As [New] type]] . . .

Static 語句的語法包含下面部分:

部分 描述
varname 必需的。變量的名稱;遵循標準變量命名約定。
subscripts 可選的。數組變量的維數;最多可以定義 60 維的多維數組。subscripts 參數使用下面的語法:
  [lower To] upper [,[lower To] upper] . . .
  如果不顯式指定 lower,則數組的下界由 Option Base 語句控制。如果沒有 Option Base 語句則下界爲 0。
New 可選的。用它可以隱式地創建對象的關鍵字。如果使用 New 聲明對象變量,則在第一次引用該變量時將新建該對象的實例,因此不必使用 Set 語句來對該對象引用賦值。New 關鍵字不能用來聲明任何內部數據類型的變量,也不能用來聲明從屬對象的實例。
type 可選的。變量的數據類型;可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(對變長的字符串)、String * length(對定長的字符串)、Object、Variant、用戶定義類型或對象類型。所聲明的每個變量都要有一個單獨的 As type 子句。

說明

模塊的代碼開始運行後,使用 Static 語句聲明的變量會一直保持其值,直至該模塊復位或重新啓動。可以在非靜態的過程中使用 Static 語句顯式聲明只在該過程內可見,但具有與包含該過程定義的模塊相同生命期的變量。

可以在過程中使用 Static 語句來聲明在過程調用之間仍能保持其值的變量的數據類型。例如,下面的語句聲明瞭一個定長的整型數組:

Static EmployeeNumber(200) As Integer

下面的語句爲 worksheet 的新實例聲明瞭一個變量:

Static X As New Worksheet

如果在定義對象變量時沒有使用 New 關鍵字,則在使用該變量之前,必須使用 Set 語句將一個已有的對象賦給這個引用對象的變量。在被賦值之前,所聲明的這個對象變量有一個特定值 Nothing,這個值表示該變量沒有指向任何對象的實例。若在聲明中使用了 New 關鍵字,則在第一次引用對象時將新建一個該對象的實例。

如果不指定數據類型或對象類型,且在模塊中沒有使用 Deftype 語句,則按缺省情況,定義該變量爲 Variant 類型。

注意   Static 語句與 Static 關鍵字很相似,但是針對不同的效果來使用的。如果使用 Static 關鍵字(如 Static Sub CountSales ())來聲明一個過程,則該過程中的所有局部變量的存儲空間都只分配一次,且這些變量的值在整個程序運行期間都存在。對非靜態過程而言,該過程每次被調用時都要爲其變量分配存儲空間,當該過程結束時都要釋放其變量的存儲空間。Static 語句則用來在非靜態的過程中聲明特定的變量,以使其在程序運行期間能保持其值。

在初始化變量時,數值變量被初始化爲 0,變長的字符串被初始化爲一個零長度的字符串 (""),而定長的字符串則用 0 填充。Variant 變量被初始化爲 Empty。用戶自定義類型的變量的每個元素作爲各自獨立的變量進行初始化。

注意 如果在過程中使用 Static 語句,應和其它的聲明語句(如 Dim)一樣將其放在過程的開始。


Stop 語句

暫停執行。

語法

Stop

說明

可以在過程中的任何地方放置 Stop 語句,使用 Stop 語句,就相當於在程序代碼中設置斷點。

Stop 語句會暫停程序的執行,但是它不像 End,因爲 Stop 不會關閉任何文件,或清除變量,除非它是以編譯後的可執行文件 (.EXE) 方式來執行。


Sub 語句

聲明子過程的名稱,參數,以及構成其主體的代碼。

語法

[Private | Public | Friend] [Static] Sub name [(arglist)]
[statements]
[Exit Sub]
[statements]

End Sub

Sub 語句的語法包含下面部分:

部分 描述
Public 可選的。表示所有模塊的所有其它過程都可訪問這個 Sub 過程。 如果在包含 Option Private 的模塊中使用,則這個過程在該工程外是不可使用的。
Private 可選的。表示只有在包含其聲明的模塊中的其它過程可以訪問該 Sub 過程。
Friend 可選的。只能在類模塊中使用。表示該 Sub 過程在整個工程中都是可見的,但對對象實例的控制者是不可見的。
Static 可選的。表示在調用之間保留 Sub 過程的局部變量的值。Static 屬性對在 Sub 外聲明的變量不會產生影響,即使過程中也使用了這些變量。
name 必需的。Sub 的名稱;遵循標準的變量命名約定。
arglist 可選的。代表在調用時要傳遞給 Sub 過程的參數的變量列表。多個變量則用逗號隔開。
statements 可選的。Sub 過程中所執行的任何語句組。

其中的 arglist 參數的語法以及語法各個部分如下:

[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue]

部分 描述
Optional 可選的。表示參數不是必需的關鍵字。如果使用了該選項,則 arglist 中的後續參數都必須是可選的,而且必須都使用 Optional 關鍵字聲明。如果使用了 ParamArray,則任何參數都不能使用 Optional
ByVal 可選的。表示該參數按值傳遞。
ByRef 可選的。表示該參數按地址傳遞。ByRef 是 Visual Basic 的缺省選項。
ParamArray 可選的。只用於 arglist 的最後一個參數,指明最後這個參數是一個 Variant 元素的 Optional 數組。使用 ParamArray 關鍵字可以提供任意數目的參數。ParamArray 關鍵字不能與 ByValByRef,或 Optional 一起使用。
varname 必需的。代表參數的變量的名稱;遵循標準的變量命名約定。
type 可選的。傳遞給該過程的參數的數據類型,可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(只支持變長)、Object 或 Variant。如果沒有選擇參數 Optional,則可以指定用戶定義類型,或對象類型。
defaultvalue 可選的。任何常數或常數表達式。只對 Optional 參數合法。如果類型爲 Object,則顯式的缺省值只能是 Nothing

說明

如果沒有使用 Public、Private Friend 顯式指定,Sub 過程按缺省情況就是公用的。如果沒有使用 Static,則在調用之後不會保留局部變量的值。Friend 關鍵字只能在類模塊中使用。不過 Friend 過程可以被工程的任何模塊中的過程訪問。Friend 過程不會在其父類的類型庫中出現,且 Friend 過程不能被後期綁定。

注意   Sub 過程可以是遞歸的;也就是說,該過程可以調用自己來完成某個特定的任務。不過,遞歸可能會導致堆棧上溢。通常 Static 關鍵字和遞歸的 Sub 過程不在一起使用。

所有的可執行代碼都必須屬於某個過程。不能在別的 Sub、Function Property 過程中定義 Sub 過程。

Exit Sub 語句使執行立即從一個 Sub 過程中退出。程序接着從調用該 Sub 過程的語句下一條語句執行。在 Sub 過程的任何位置都可以有 Exit Sub 語句。

Sub 過程與 Function 過程的相似之處是:它們都一個可以獲取參數,執行一系列語句,以及改變其參數的值的獨立過程。而與 Function 過程不同的是:帶返回值的 Sub 過程不能用於表達式。

可以使用過程名並後跟相應的參數列表來調用一個 Sub 過程。請參閱 Call 語句關於如何調用 Sub 過程的詳細的說明信息。

Sub 過程中使用的變量分爲兩類:一類是在過程內顯式定義的,另一類則不是。在過程內顯式定義的變量(使用 Dim 或等效方法)都是局部變量。對於使用了但又沒有在過程中顯式定義的變量,除非其在該過程外更高級別的位置有顯示地定義,否則也是局部的。

注意 過程可以使用沒有在過程內顯式定義的變量,但只要有任何在模塊級別定義的名稱與之同名,就會產生名稱衝突。如果過程中使用的未定義的變量與別的過程,常數,或變量的名稱相同,則認爲過程使用的是模塊級的名稱。顯式定義變量就可以避免這類衝突。可以使用 Option Explicit 語句來強制顯式定義變量。

注意 不能使用 GoSub、GoTo Return 來進入或退出 Sub 過程。


Time 語句

設置系統時間。

語法

Time = time

必要的 time 參數,可以是任何能夠表示時刻的數值表達式、字符串表達式或它們的組合。

說明

如果 time 是一字符串,則 Time 會試着根據系統指定的時間,利用時間分隔符將其轉換成一個時間。如果無法轉換成一個有效的時間,則會導致錯誤發生。


Type 語句

在模塊級別中使用,用於定義包含一個或多個元素的用戶自定義的數據類型。

語法

[Private | Public] Type varname
elementname [([subscripts])] As type
[elementname [([subscripts])] As type]
. . .

End Type

Type 語句的語法包含下面部分:

部分 描述
Public 可選的。用於聲明可在所有工程的所有模塊的任何過程中使用的用戶定義類型。
Private 可選的。用於聲明只能在包含該聲明的模塊中使用的用戶自定義的類型。
varname 必需的。用戶自定義類型的名稱;遵循標準的變量命名約定
elementname 必需的。用戶自定義類型的元素名稱。除了可以使用的關鍵字,元素名稱也應遵循標準變量命名約定。
subscripts 可選的。數組元素的維數。當定義大小可變的數組時,只須圓括號。subscripts 參數使用如下語法:
  [lower To] upper [,[lower To] upper] . . .
  如果不顯式指定 lower,則數組的下界由 Option Base 語句控制。如果沒有 Option Base 語句則下界爲 0。
type 必需的。元素的數據類型;可以是Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(對變長的字符串)、String * length(對定長的字符串)、Object、Variant、其它的用戶自定義的類型或對象類型。

說明

Type 語句只能在模塊級使用。使用 Type 語句聲明瞭一個用戶自定義類型後,就可以在該聲明範圍內的任何位置聲明該類型的變量。可以使用 DimPrivate、Public、ReDim Static 來聲明用戶自定義類型的變量。

在標準模塊中,用戶自定義類型按缺省設置是公用的。可以使用 Private 關鍵字來改變其可見性。而在類模塊中,用戶自定義類型只能是私有的,且使用 Public 關鍵字也不能改變其可見性。

Type...End Type 塊中不允許使用行號和行標籤。

用戶自定義類型經常用來表示數據記錄,記錄一般由多個不同數據類型的元素組成。

下面的示例演示了一個用戶自定義類型的大小固定的數組的用法:

Type StateData
   CityCode (1 To 100) As Integer   ' Declare a static array.
   County As String * 30
End Type

Dim Washington(1 To 100) As StateData

在上述示例中,StateData 中包括了一個 CityCode 靜態數組,且記錄Washington 的結構與 StateData 相同。

當在用戶自定義類型中聲明大小固定的數組時,必須用數字文字或常數而不能用變量來聲明數組的維數。

數組的下界由 Option Base 語句的設置確定。


While...Wend 語句

只要指定的條件爲 True,則會重複執行一系列的語句。

語法

While condition
[statements]

Wend

While...Wend 語句的語法具有以下幾個部分:

部分 描述
condition 必要參數。數值表達式或字符串表達式,其計算結果爲 TrueFalse。如果 condition 爲 Null,則 condition 會視爲 False
statements 可選參數。一條或多條語句,當條件爲 True 時執行。

說明

如果 condition True,則所有的 statements 都會執行,一直執行到 Wend 語句。然後再回到 While 語句,並再一次檢查 condition,如果 condition 還是爲 True,則重複執行。如果不爲 True,則程序會從 Wend 語句之後的語句繼續執行。

While...Wend 循環也可以是多層的嵌套結構。每個 Wend 匹配最近的 While 語句。

提示   Do...Loop 語句提供了一種結構化與適應性更強的方法來執行循環。


Width # 語句

將一個輸出行的寬度指定給用 Open 語句打開的文件。

語法

Width #filenumber, width

Width # 語句的語法具有以下幾個部分:

部分 描述
filenumber 必要。任何有效的文件號。
width 必要。範圍在 0-255 之間的數值表達式,在新的一行開始之前,指出在該行上可出現多少字符。如果 width 等於 0,則行的長度不受限制。width 的缺省值爲 0。

With 語句

在一個單一對象或一個用戶定義類型上執行一系列的語句。

語法

With object
[statements]

End With

With 語句的語法具有以下幾個部分:

部分 描述
object 必要參數。一個對象或用戶自定義類型的名稱。
statements 可選參數。要執行在 object 上的一條或多條語句。

說明

With 語句可以對某個對象執行一系列的語句,而不用重複指出對象的名稱。例如,要改變一個對象的多個屬性,可以在 With 控制結構中加上屬性的賦值語句,這時候只是引用對象一次而不是在每個屬性賦值時都要引用它。下面的例子顯示瞭如何使用 With 語句來給同一個對象的幾個屬性賦值。

With MyLabel
   .Height = 2000
   .Width = 2000
   .Caption = "This is MyLabel"
End With

注意 當程序一旦進入 With 塊,object 就不能改變。因此不能用一個 With 語句來設置多個不同的對象。

可以將一個 With 塊放在另一個之中,而產生嵌套的 With 語句。但是,由於外層 With 塊成員會在內層的 With 塊中被屏蔽住,所以必須在內層的 With 塊中,使用完整的對象引用來指出在外層的 With 塊中的對象成員。

重點 一般來說,建議您不要跳入或跳出 With 塊。如果在 With 塊中的語句被執行,但是 WithEnd With 語句並沒有執行,則一個包含對該對象引用的臨時變量將保留在內存中,直到您退出該過程。


Write # 語句

將數據寫入順序文件。

語法

Write #filenumber, [outputlist]

Write # 語句的語法具有以下幾個部分:

部分 描述
filenumber 必要。任何有效的文件號。
outputlist 可選。要寫入文件的數值表達式或字符串表達式,用一個或多個逗號將這些表達式分界。

說明

通常用 Input # 從文件讀出 Write # 寫入的數據。

如果省略 outputlist,並在 filenumber 之後加上一個逗號,則會將一個空白行打印到文件中。多個表達式之間可用空白、分號或逗號隔開。空白和分號等效。

Write # 將數據寫入文件時將遵循幾個通用的約定,使得無論什麼國別都可用 Input # 讀出並正確解釋數據:

  • 在寫入數值數據時總使用句號作爲十進制分隔符。

  • 對於 Boolean 類型的數據,或者打印 #TRUE# 或者打印 #FALSE#。無論在什麼地區,都不將 True False 這兩個關鍵字翻譯出來。

  • 使用通用的日期格式將 Date 類型的數據寫入文件中。當日期或時間的部件丟失或爲零時,只將現有部分寫入文件中。

  • 如果 outputlist 的數據爲 Empty,則不將任何數據寫入文件。但對 Null 數據,則要寫入 #NULL#

  • 如果 outputlist 數據爲 Null 數據,則將 #NULL# 寫入文件中。

  • 對於 Error 類型的數據,輸出看起來與 #ERROR errorcode# 一樣。無論在什麼地區,都不將關鍵字 Error 翻譯出來。

Print # 語句不同,當要將數據寫入文件時,Write # 語句會在項目和用來標記字符串的引號之間插入逗號。沒有必要在列表中鍵入明確的分界符。Write # 語句在將 outputlist 中的最後一個字符寫入文件後會插入一個新行字符,即回車換行符,(Chr(13) + Chr(10))。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章