close

Chapter VBA

VBA002 自訂函數計算佣金

Section

函數(Function)的結構跟程序(Sub)的大致相同,只是函數一般要求參數,且會傳回一個結果。例如:INT()函數,它接受一個數值的參數(這是必需的),然後傳回該參數的整數部份,INT(3.572)就是3

在定義函數時,我們應該清楚的宣告各參數函數結果資料型態(Data Type)

舉一個實例:

有巧克力吐司與地瓜吐司二種物品,銷貨員每賣10個巧克力吐司或5個地瓜吐司,就可分別獲得5元或4元獎金,如果巧克力吐司與地瓜吐司的日銷售總數超過200個,銷售員可額外得到100元獎金,若日銷售總數超過500個,銷售員可額外得到400元獎金,最後如果所有的獎金超過800元,可額外獲得2%激勵獎金。

要記住,我們雖然講到很多數值,但參數只有二個,就是巧克力吐司與地瓜吐司二種物品銷售數目,是整數(Integer),而答案是小數(SingleDouble)

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

開啟一個空白活頁簿來建立如下圖的資料。

image

ALT+F11鍵,開啟並切換到VBA編輯器。

點取「插入 > 模組」指令。

輸入如下圖所示的程式碼(‘後面的說明文字可視需求決定是否要輸入)

image

點取「檢視 > 即時運算視窗」指令或按CTRL + G鍵,開啟即時運算視窗。

我們如下圖所示,輸入一些參數來做測試,看自訂函數程式是否有問題。

image

關閉VBA編輯器視窗,回到活頁簿視窗。

D2儲存格輸入公式:「=commission(B2,C2)」,再按Enter鍵完成輸入。

D2儲存格公式複製到D3~D10儲存格。

image


arrow
arrow

    錦子老師 發表在 痞客邦 留言(0) 人氣()