2023年9月9日 星期六

初學者的VBA資料分析 Class 1 1.3 VBA的第一個程式 1/2

 1.3 VBA的第一個程式 

先來聊聊幾塊:

1.錄製巨集

2.自己寫的VBA CODE

1.錄製巨集:

先來看自己錄製的巨集,長相如何:

Sub 巨集1()

' 巨集1 巨集

    Range("B3").Select

    ActiveCell.FormulaR1C1 = "=R[-2]C+R[-1]C"

    Range("B4").Select    

End Sub

恩好多英文單字,但不難在英文單字間,存在某個程度的架構。

圖1.巨集1
由上往下看看最:

SUB架構:

外層架構 SUB~~END SUB 把所有程式碼包起來了,這部分稱為SUB架構。

接下來,紅圈部分圈選了 ". "與等號

先來看看等號的部分,先引入一個觀念:

VBA 程式語言是等號右手邊做計算,跟數學不一樣,數學式是等號左手邊做計算。

VBA 程式語言是等號右手邊計算完成後,提供給等號左手邊做儲存或是對應的處理。

紅圈部分圈選了 ". "的部分,為物件方法與屬性:

錄製的巨集中". " 都出現在等號左手邊???? 因為要使用到物件了,不同物件存有各自的屬性與方法,要透過". "來調用的。

越來越多問號了?
第一個問號紀錄:SUB架構是啥?

ANS:簡單來說用來存放程式碼的地方,SUB 接續程式的名稱並以END SUB作為結尾。

如前篇的Hello world:

SUB HELLO_WORLD()

            debug. Print "hello world"

end sub

第二個問號紀錄:物件方法與屬性是啥。

講完都睡著了,先暫時不回答。 


掌握那些觀念:
VBA 程式語言是等號用途與數學式不一樣

2.自己寫的VBA CODE:

一樣的功能,針對b1與b2儲存格做加總計算後,存放於b3儲存格中。

Sub total()

         ActiveSheet.Range("b3") = ActiveSheet.Range("b1") + ActiveSheet.Range("b2")

End Sub

疑?等等怎才一行,錄製的有3行ㄝ
呵呵,好煩歐,先不管這些。
b1跟b2儲存格在等號右手邊,但寫法怎明顯不同。
可以透過range這個關鍵字,可以直接使用excel函數操作熟悉的儲存格表示方式。

所以我們來做做第一個程式吧

Sub CAL()

ActiveSheet.Range("B1") = ActiveSheet.Range("c1") + ActiveSheet.Range("d1")
ActiveSheet.Range("B2") = ActiveSheet.Range("c1") - ActiveSheet.Range("d1")
ActiveSheet.Range("B3") = ActiveSheet.Range("c1") * ActiveSheet.Range("d1")
ActiveSheet.Range("B4") = ActiveSheet.Range("c1") / ActiveSheet.Range("d1")

End Sub

操做:

圖2.練習操作GIF


本篇到這裡,下次講講與說說一些物件、方法與屬性的概念







沒有留言:

張貼留言

指數變化(2024.05.17)

指數變化(2024.05.17) 上周焦點:         5/9當周焦點                          事實:fed與非農就業,引起投資市場對降息有加速,但肯定的是,fed說不加息了。                        美國密西根大學信心指數 ...