Chapter VBA | VBA002 自訂函數計算佣金 |
Section |
函數(Function)的結構跟程序(Sub)的大致相同,只是函數一般要求參數,且會傳回一個結果。例如:INT()函數,它接受一個數值的參數(這是必需的),然後傳回該參數的整數部份,INT(3.572)就是3。
在定義函數時,我們應該清楚的宣告各參數和函數結果的資料型態(Data Type)。
舉一個實例:
有巧克力吐司與地瓜吐司二種物品,銷貨員每賣10個巧克力吐司或5個地瓜吐司,就可分別獲得5元或4元獎金,如果巧克力吐司與地瓜吐司的日銷售總數超過200個,銷售員可額外得到100元獎金,若日銷售總數超過500個,銷售員可額外得到400元獎金,最後如果所有的獎金超過800元,可額外獲得2%激勵獎金。
要記住,我們雖然講到很多數值,但參數只有二個,就是巧克力吐司與地瓜吐司二種物品銷售數目,是整數(Integer),而答案是小數(Single或Double)。
Option explicit ‘計算佣金的自訂函數 ‘輸入巧克力吐司與地瓜吐司的數目 ‘輸出應得佣金(小數) Function commission (A As integer,B As integer) As Single Dim Temp As Single ‘宣告一個變數、方便運算,它須為小數 Temp=0 ‘先把Temp設為0 ‘每賣10個巧克力吐司或5個地瓜吐司就可分別獲得5元或4元 Temp=INT(A/10)*5+INT(B/5)*4 Select Case (A+B) ‘如果巧克力吐司與地瓜吐司銷售總數大於500,可額外獲得獎金400元 Case Is > 500 Temp = Temp+400 ‘如果巧克力吐司與地瓜吐司銷售總數大於200,可額外獲得獎金100元 Case Is > 200 Temp = Temp + 100 End Select ‘如果獎金超過800元,可額外獲得2%激勵獎金 If Temp > 800 then Temp = Temp * 1.02 End If ‘將儲存在Temp中的獎金,放到函數名稱 Commission = Temp End Function |
開啟一個空白活頁簿來建立如下圖的資料。
按ALT+F11鍵,開啟並切換到VBA編輯器。
點取「插入 > 模組」指令。
輸入如下圖所示的程式碼(‘後面的說明文字可視需求決定是否要輸入)
點取「檢視 > 即時運算視窗」指令或按CTRL + G鍵,開啟即時運算視窗。
我們如下圖所示,輸入一些參數來做測試,看自訂函數程式是否有問題。
關閉VBA編輯器視窗,回到活頁簿視窗。
在D2儲存格輸入公式:「=commission(B2,C2)」,再按Enter鍵完成輸入。
將D2儲存格公式複製到D3~D10儲存格。
留言列表