VBA ActiveSheet用法是新手入門要熟悉的技巧,同時也是實務上很常用到的一個對象。本文以報表期間更新為範例,介紹ThisWorkbook、Worksheets Cells的3層Excel結構,掌握程式基本概念。
目錄
Toggle一、資產負債表日期
財務報表每個月結帳都要更新,Excel操作方式是選取C3儲存格,資料編輯列裡直接輸入。
二、Cells().Value、Font.Name、Font.Size
Cells(3, 3).Value = “2020年7月31日”
Cells()是儲存格對象,定位方式和Excel通常用法不太一樣,它括號裡面可以有兩個數字,第1個數字代表第幾列,第2個數位代表第幾欄,所以Cells(3,3)等同於C3儲存格。Cells.()Value指的是儲存格的值,因此這一行程式碼的效果便是由VBA在ExcelC3儲存格裡輸入「2020年7月31日」。
Cells.Font.Name = “微軟正黑體”
Cells如果忽略(),代表工作表上所有儲存格,這裡統一設置字型為「微軟正黑體」。
Cells.Font.Size = 12
統一設置字型大小為12。
三、集合.元素、對象.屬性
VBA是一門程式語言,既然是語言,可以從文法的角度學習。以上第二步驟的程式碼為例,涉及到兩個很重要的VBA基本觀念:集合與元素、對象與屬性。
工作表上所有的儲存格就是一個集合,Cells(3,3)是這個集合裡面其中一個元素,也就是工作表C3這個特定儲存格。
另外英文文法中都有基本句型,VBA程式語言也有兩大基本句型。其中之一是其中之一是主持,點動詞代表要針對這個對象進行種種操作,第二個主要句型是主詞.形容詞,代表要設定這個對象的屬性值,例如這裡是將C3儲存格的值設定為「2020年7月31日」。
第1個步驟是在Excel輸入內容,VBA則是設定特定儲存格對象的屬性值,兩者在意義上有點差別。
四、財務報表期間及格式更新
執行程式之後,不但C3儲存格已更新資產負債表日期,工作表所有儲存格也都更改格式了。
五、綜合損益表期間
除了資產負債表,綜合損益表、權益變動表、現金流量表等財務報表也要更新期間,而且有可能在不同位置,例如綜合損益表的期間是在A3儲存格。
六、ActiveSheet、Application.ThisWorkbook.Worksheets()
為了一次更新四大財務報表的期間,設計VBA程式如下:
ActiveSheet.Cells(3, 3).Value = “2020年7月31日”
ActiveSheet意思是作用中的儲存格,前面第二步驟只有Cells,VBA在執行時會預設為ActiveSheet。所以注意到這裡一定要在資產負債表執行程式,如果執行程式時是在綜合損益表,VBA會在綜合損益表的C3儲存格輸入,顯然有誤。
Application.ThisWorkbook.Worksheets(“綜合損益表”).Cells(3, 1).Value = “2020年7月”
前面提到Cells是省略了ActiveSheet,其實更完整的是省略了Application.ThisWorkbook.Worksheets,這是Excel最主要的物件結構,Excel應用軟體、活頁簿、工作表,如此從上到下的層級。
ThisWorkbook.Worksheets(“權益變動表”).Cells(5, 1).Value = “2020年7月”
這裡省略了Application,其實除了要執行非活頁簿工作表儲存格等操作,通常都不會特別書寫Application,因為沒有特別指定的需要。
Worksheets(“現金流量表”).Cells(4, 1).Value = “2020年7月”
這裡省略了ThisWorkbook,因為都是在目前的活頁簿執行,沒有必要特別指定。
七、Excel VBA對象結構
整理上個步驟的程式,可以得到VBA物件的基本觀念。
首先,物件是有層級結構,要依照「大對象.小對象」的規則指定操作對象,類似英文文法的「A of B of C」這樣的語句。再者,和有些Excel函數引數一樣,大對象可以省略,省略的話VBA會有預設值,而且通常預測值會跟Excel操作時的直覺非常接近。
Excel VBA物件結構和程式語言文法
這篇文章是用Excel最常操作的活頁簿工作表儲存格作為範例介紹VBA物件結構。不過其實在整個VBA裡面還有其他非常多的對象結構,例如樞紐分析表、圖形圓表,甚至是上方功能區和工具列,或者是VBA的模組,都可以是程式對象。就本質來說,只要是在Excel軟體應用可以操作執行的東西,便是VBA可以設計執行的對象。
Vba是以物件為導向的程式語言,它的概念是在設計程式時要先確定對象是什麼,然後根據這個對象(主詞)執行屬性設定(形容詞)或者指令操作(動詞),掌握住這個基本概念,等於是掌握了基本文法,在寫VBA程式時比較不會無所適從。
贊贊小屋服務:3,000元網頁設計,5,000元Google Kinsta主機,8,000元Excel ERP系統。
歡迎前往贊贊小屋VBA教學中心。
取得範例程式請前往VBA社團,訂閱請加入VBA Line社群。
VBA課程推薦:零基礎入門進階的20小時完整內容