5. 瞭解VBA的語法
5.1 錄製巨集的限制 會錄製到不必要的預設值 容易錄製了冗長的操作 只能錄製特定執行範圍的巨集 無法錄製需要判斷或重複執行的巨集
會錄製到不必要的預設值
容易錄製了冗長的操作
只能錄製特定執行範圍的巨集 只能使用VBA來 協助完成巨集
無法錄製需要判斷或重複執行的巨集 突顯成績不及格的
5.2 VBA的基本用語及語法 程序 巨集是能自動執行的應用程式的代名詞 但在VBA中,巨集錄製的記錄稱之為「程序」 例如: Sub Macro1() With Select.Font .Name = “Times New Roman” .FontStyle = “粗體” .Size = 14 End With End Sub
物件 任何可以利用的工具,都是由物件所組成的 Excel 也是一樣,是多個物件的集合 例如汽車是車身、輪胎和引擎等的集合 Excel 也是一樣,是多個物件的集合 以 VBA 撰成的程序將替代使用者操作 Excel 物件,也就是說 VBA 就是記載如何操作 Excel物件的程式語言
屬性 「屬性」是物件的一部份,我們可以把它當成物件的「規格」來看待 所以改變屬性(規格)的值,相對物件就會跟著改變 規格(屬性) 值 車型 Honda CRV 工作表名稱 Sheet1 車寬 1728mm 儲存格 70像素 顏色 銀 字體顏色 紅
查詢屬性的值 例如將工作表(1)的名稱記錄到myName的變數中 myName = Worksheets(1).Name 變數 物件 屬性
變更屬性的值
「屬性」的值 實務上,有些屬性值只能查詢,但不能設定 比如說,活頁簿上工作表數量 ○ myNo = Sheets.Count (可以查詢)
方法 在定義上,方法為「特定物件的程序」 簡單來說,可以對物件下達命令的動作(或指令),就稱為方法
使用引數讓方法對物件下達的命令更加精準 例如踩油門的動作,對「油門」物件執行「踩下去」的動作,那到底要踩多深(加速到多少)? 依據行車狀況,可能需要下達的命令是「踩下油門,直到車速到達時速50公里」
5.3 容器 Excel 物件的階層關係 以「儲存格」這個物件來看 儲存格是工作表的子物件,他不是圖表工作表及工具列的子物件 也就是說儲存格物件只和工作表有從屬關係 工作表為儲存格的父系物件 儲存格為工作表的子系物件 若以活頁簿和工作表相較 工作表的角色為活頁簿的子系物件
容器? 駕駛在A車內,那啟動A車,只需對駕駛下達「請發動引擎」,A車就會啟動了 那如果要發動B車怎麼辦? 對駕駛說: 「請發動B車 的引擎」
從Excel的角度來看下面的例子 Range(“A1”).Value = “VBA” 這個陳述式的意思是要在儲存格”A1”中輸入「VBA」
若我們要在非使用中,其他工作表的儲存格內輸入資料,就一定要指定活頁簿及工作表的名稱
集合的觀念 在Excel中,有時你並不只使用單一物件,常會遇到使用同種類、多物件的時機 比如,開啟多個活頁簿的時候 同樣的,使用VBA也可對相同種類、複數物件下達命令,這些複數物件稱為「集合」
使用集合與物件的參照值 以下是關閉所有活頁簿的陳述式
使用集合的參照值關閉第一個開啟的活頁簿
前頁(1)與(2)的差異在於「workbooks」複數物件與「workbook」單數物件 從邏輯上來看,從單一物件中指定物件是沒有意義的 所以從(1)可以得知VBA的物件參照方式為
索引編號的參照 指定名稱的參照
Review 什麼是「程序」? 什麼是「物件」? 什麼是「屬性」? 什麼是「方法」? 什麼是「容器」? End