2023/10/13

【Excel教學】認識VBA中的副程式Sub與Function

文、意如老師

 


上一篇已經做出了我們的第一個VBA程式,接下來就要認識常用的VBA內建的功能。

 

任務一:建立一個新功能
任務二:認識Sub副程式
任務三:認識Function副程式
任務四:使用範圍Public與Private

 


任務一:建立一個新功能


首先建立一個新檔案、新的功能,直接點選開發人員 ▶ Visual Basic按鈕

 

[office-yiru-excel-teaching-know-the-subroutine-sub-and-function-in-vba]for ai.rookiesavior lesson img1

 


在空白區按下右鍵 ▶ 插入 ▶ 模組

 

[office-yiru-excel-teaching-know-the-subroutine-sub-and-function-in-vba]for ai.rookiesavior lesson img2

 


此時會跳出Module1,模組寫程式碼的視窗。

 

[office-yiru-excel-teaching-know-the-subroutine-sub-and-function-in-vba]for ai.rookiesavior lesson img3

 


我們可以先修改模組名稱,方便我們更容易辨識,點選屬性 ▶ 名稱 ▶ 點擊後輸入你的新模組名稱,範例中取名叫newmodule

 

[office-yiru-excel-teaching-know-the-subroutine-sub-and-function-in-vba]for ai.rookiesavior lesson img4

 


接下來到右邊視窗中輸入程式:
先寫一個簡單的彈窗,來測試是否可以正常的執行。

 

Sub test()
    ‘要執行的程式
    MsgBox (“hi,123”)
End Sub


輸入完程式後按下上方的藍色箭頭執行

 

[office-yiru-excel-teaching-know-the-subroutine-sub-and-function-in-vba]for ai.rookiesavior lesson img5
 

 

按下藍色箭頭執行後即可立即看到效果。

 

[office-yiru-excel-teaching-know-the-subroutine-sub-and-function-in-vba]for ai.rookiesavior lesson img6

 


任務二:認識Sub副程式


通常我們需要將程式寫在Sub [功能名稱]與End Sub結尾中,一組sub就代表一個巨集也就是一個功能,因此如果有兩個功能,就可以寫兩組sub。


建立第二個功能(sub):
1. 直接在原本的程式下方再輸入一組Sub [功能名稱]與End Sub即可

 

Sub Hello()
MsgBox (“Hello!!”)
End Sub


2. 右上方下拉選單中選擇要執行的巨集名稱
3. 藍色按鈕執行
4. 結果顯示

 

[office-yiru-excel-teaching-know-the-subroutine-sub-and-function-in-vba]for ai.rookiesavior lesson img7

 


任務三:認識Function副程式


VBA程式中都是由sub(副程式)與function(方法)所主成的,sub代表巨集,在多個巨集中,有時候會使用到某些特定重複的功能,這時後就可以把這些常常會用到的重複功能寫成function(方法),當建立巨集Sub時,有需要時就可以馬上呼叫function來執行某一段語法,不需要重新造輪子,範例如下:


1. 寫一個功能傳入價錢與數量,接下來算出總價。

 

Function cal(price, num)
cal = price * num
End Function


2. 寫一個巨集呼叫功能並傳入價錢與數量,將結果顯示在彈窗中。

 

Sub show()
MsgBox cal(100, 2)
End Sub


3. 選擇要執行的show()的巨集
4. 點選藍色執行按鈕
5. 彈窗顯示計算結果


流程步驟如下圖:

 

[office-yiru-excel-teaching-know-the-subroutine-sub-and-function-in-vba]for ai.rookiesavior lesson img8

 


任務四:使用範圍Public與Private


VBA Sub 與 Function中的範圍分成 Public與Private,只要加在Sub 與 Function前面即可。


Public與Private主要差別在於,使用 Public 時其它的模組(Module) 都可以使用,此Sub 與 Function,但使用 Private 時只有此模組(Module) 可使用此Sub 與 Function。範例如下:

 

Public Function cal(price, num)
cal = price * num
End Function


Private Sub show()
MsgBox (cal(100, 2))
End Sub

 

[office-yiru-excel-teaching-know-the-subroutine-sub-and-function-in-vba]for ai.rookiesavior lesson img9

 

 

加入菜鳥救星學習會員,不定期獲得更多知識吧!點我註冊 / 登入

 

不同頻道,不同知識 !