SOGO論壇
  登入   註冊   找回密碼
查看: 435|回覆: 0
列印 上一主題 下一主題

[技術文章] 副程式與函數 [複製連結]

Rank: 11Rank: 11Rank: 11Rank: 11

熱心參予論壇活動及用心回覆主題勳章 數位硬體勳章

狀態︰ 離線
跳轉到指定樓層
1
發表於 2012-7-19 10:50:37 |只看該作者 |倒序瀏覽
Sub 陳述式

宣告 Sub 程序的名稱、引數和其中的程式碼。

語法

[Private | Public] [Static] Sub name [(arglist)]
    [statements]
    [Exit Sub]
    [statements]

End Sub


語法

Sub 陳述式的語法具有下列幾個單元:

單元 描述
Public 選擇性引數。表示任何模組裏的所有其它程序都可呼叫 Sub 程序。如果模組裏有 Option Private,那麼此程序就不能在專案之外使用。
Private 選擇性引數。表示 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 選擇性引數。表示以傳址的方式來傳遞引數。Visual Basic 預設為 ByRef。
ParamArray 選擇性引數。使用在 arglist 的最後一個引數上,表示此引數是 Variant 元素的 Optional 陣列。ParamArray 關鍵字讓您可以使用多個引數,但不可以和 ByVal、ByRef、或 Optional 共用。
varname 必要的引數。引數之變數的名稱,遵循標準變數命名規格。
type 選擇性引數。傳給程序的引數之資料型態,可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal (目前尚未支援)、Date、String (只限可變長度)、Object或 Variant。如果引數不是 Optional 的,則可指定使用者自訂型態或物件型態。
defaultvalue 選擇性引數。任何常數或常數運算式,只能使用在 Optional 的引數上。如果型態是 Object,則預設值只能是 Nothing。

請注意

如果沒有明確的使用 Public、Private或 Sub 程序預設是公用的。如果沒有使用 Static,則區域變數的值在呼叫之間是不保留的。

注意 Sub 程序可以遞迴,也就是它們可以呼叫自己。然而,遞迴可能會造成堆疊溢位。Static 關鍵字通常不使用在遞迴的 Sub 程序上。

所有的可執行程式碼都必須在程序中。不可以在 Function、Sub 或 Property 程序裏定義其它的 Sub 程序。

Exit Sub 陳述式會使 Sub 程序立即停止。程式會從呼叫該 Sub 程序的下一行陳述式繼續執行。Exit Sub 陳述式可以在 Sub 程序任何位置出現,且不限次數。

如同 Sub 程序一樣,Function 程序是獨立的程序,可以接受引數,執行一串陳述式,並且改變引數的值。然而,不像 Function 程序會傳回值,Sub 程序無法在運算式裏使用。

只要使用程序名稱後,接著以括號括起來的引數列,就可以呼叫 Sub 程序。請參考 Call 陳述式以得知關於如何呼叫 Sub 程序的特定資訊。

在 Sub 程序中使用的變數有兩類:一為程序中明確宣告的,以及不是此類的。在程序中明確宣告的變數 (使用 Dim 或同類字),必為區域性的。程序中使用到,但未明確在程序中宣告的變數也是區域的,除非此變數已經在程序外的更高層次中明確宣告過。

注意 程序可使用不是在該程序裏明確宣告的變數,但是若在模組層次定義了相同的名稱,就會發生名稱上的衝突。如果程序裏引用了未宣告的變數,而此變數的名稱和其它程序、常數、或變數的名稱相同,那麼就會認定該程序引用模組層次的名稱。所以,請明確的宣告變數以避免此種衝突。可以使用 Option Explicit 陳述式來強迫明確的宣告變數。

附註 不可以使用 GoSub、GoTo 或 Return 來進入或離開 Sub 程序。

喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-4-28 20:59

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部