「Excel VBA」在Function中定義並使用選擇性引數(Optional Arguments)和不定數量引數(Indefinite Arguments)

by 12:07:00 0 comments
今天早上突然想到 Excel 中 Sum 或者其他基本函數中,有些引數的數量其實不固定,那如果要在自定義的 Function 中要怎麼使用?
於是就整理在這兒了 ( ̄ー ̄)



1. 選擇性引數 (Optional Arguments)→使用關鍵字 Optional (use the keyword "Optional")
Function funcName(Optional arg1)

 If IsMissing(arg1) then
  MsgBox "Missing"
 Else
  Msgbox arg1
 End If

End Function
* funcName 與 arg1 均為變數名稱,可自行定義。
* IsMissing函數用來判斷是否有使用選擇性引數 arg1。



2. 不定數量的引數 (Indefinite Arguments)→使用關鍵字 ParamArray (use the keyword "ParamArray")
Function printArgs(ParamArray argList())

 For Each arg In argList
  MsgBox arg
 Next arg

End Function
* printArgs、argList 與 arg 均為變數名稱,可自行定義。
* 使用 ParamArray 定義 argList 之後,argList 為 Variant 型態的陣列,而且為選擇性變數 (Optional Arguments) ,即使並沒有使用關鍵字 Optional



3. 其他關於 Function 的小筆記 (Other note about Function)

* 指定 Function 傳回結果的資料型態
Fuction varName(arglist) as DataType


* 在即時運算視窗使用 Function (note: Ctrl+G 即可叫出即時運算視窗)
? funcName(arglist)


* 在自定義 Function 中傳回指定 Error
funcName=CVErr(xlErrNA)
以上範例是將 #N/A Error 傳回給 funcName,如果想傳回其他 Error,請參考下表。
xlErrDiv0for #DIV/0!)
xlErrNAfor #N/A)
xlErrNamefor #NAME?)
xlErrNullfor #NULL!)
xlErrNumfor #NUM!)
xlErrReffor #REF!)
xlErrValuefor #VALUE!)



有任何問題歡迎留言或Mail! ヾ(*´∀`*)ノ
If you have any problem, just leave a message or send mail to me! ヾ(*´∀`*)ノ


0 comments:

Post a Comment