一、對象的概念
在VBA中,活頁簿,工作表,儲存格,名稱,批註,條件式格式設定,圖形,圖表,透視表,地區等都是對象,對象代表了應用程式中的每個元素。
在VBE中利用F2彈出物件瀏覽器,在工程/庫下拉式清單中選擇excel,在左邊的類列表中列出了VBA所支援的所有對象。包括其方法和屬性。
對象是一個實體的物件,具有一些特徵,具有讀取和改變這些特徵的行為,而且在改變其部分特徵時,會自動產生某些預定的反應,特徵稱為屬性,改變特徵行為則為方法,改變屬性的時候引發的反應為事件
Sheets(“sheet1”).Active 啟用當前表
ActiveSheet.Name=”我的表” 將當前活動表的名稱更改
二、對象與對象集合
對象是一個應用程式中可操作的元素,對象集合則為一組具有相同性質的對象的集合,例如:工作表sheet1為一個對象,那麼sheets則為集合。Worksheet---worksheets
Name---names 條件式格式設定與條件式格式設定集合formatCondition---formatConditions
儲存格—儲存格集合 cell(行,列)---cells
對象集合有count屬性,而對象則沒有
啟用第二個視窗 Windows(“Books”).select
同時選擇三個表 sheets(Array(“sheet1”,”sheet2”,”sheet3”)).select
Sheets包含了worksheets的所有工作表對象成員和所有圖表chart對象成員。添加新工作表sheets.Add , , ,xlworksheet
注意:手動操作對象時候。必須先啟用該對象,而在VBA可以向一個非使用中的物件發送指令,設定該對象處於隱藏狀態
三、對象的層次,父物件與子物件
對象是有層次的,上一層稱父物件,下一層為子物件
Expression.Parent 父物件使用parent屬性訪問
儲存格的父物件Range(“A1”).Parent則為工作表對象
ActoveCell.parent.parent 或者使用Range(“A1”)擷取活頁簿對象
四、認識excel所有對象
Excel包含248種對象。太多了。- -,
常用的對象
Workbook 活頁簿對象
Window 視窗對象
Worksheet 工作表對象
Shape 繪圖物件
Range 儲存格對象
Name 名稱對象
Chart 繪圖物件
CommandBarPopup 下拉式功能表對象
CommandBar 工具列按鈕對象
五、對象的標記法
a) 對象的完整引用方式與簡寫
完整引用:在引用對象時將對象以及父物件的父物件錄入,可以準備找到子物件
簡寫則成為相對應用,萬泉受制於滑鼠的活動
b) 利用名稱擷取對象
對繪圖物件預設的命名方式為’圖形類型編號’,插入一個圖片。則為’圖片 1’
Sheet1.Shapes(“圖片 1”).delete 刪除該圖片
c) 重定義繪圖物件的名稱
Sheets(1).shapes(“圖片 1”).Name=”新名稱”
擷取覆蓋地區
Range(Sheets(1).Shapes(“Win XP”).BootomRightCell,Sheets(1).Shapes(“WinXP”).TopLeftCell).address(0 ,0)
注意名稱的空格半形和全形
d) 利用集合索引擷取對象
Shapes(2) 擷取到
e) 使用中的物件的簡化引用
使用中工作表 ActiveSheet
作用儲存格 ActiveCell
活動活頁簿 ActiveWorkboox
使用中視窗 ActiveWinodw
f) 利用with語句簡化對象引用
例如:將當前選擇添加黃色背景色
With Selection.Interior
.Pattern=xlSolid 填充圖案
.PatternColorIndex=xlAutomatic 圖案顏色
.Color =65535
.TintAndShade=0 深淺度
.PatternTintAndShade=0 對象的單色和底紋圖案
g) 事件中的me對象
如果註冊一個事件,則用me代表當前的對象。如果點擊sheet1則為sheet1對象。點擊sheet2 為啟用狀態則為sheet2
Me.OLEObjects.count 當前工作表的OLE對象總數
h) 儲存格的各種引用
i. Range(“A1”)
ii. Cells(1,1)
iii. [A1]
iv. 引用地區 Range(”A1:D1”)
v. Range(“D3:E7”)(1.5).address 結果為$E$3 Rnge(“D3:E7”)(4.4) $E$4
Range(“D3:E7”)(1,3) 表示地區的一行三列 可為負,左位移和右位移
vi. 引用多個地區 Range(“A1:D3,F4,Z1:ZB2”)
vii. 引用整行整列 Range(”2:2”) 引用第二行 Range(“2:10”) 二行到十行, Range(“D:d”) D列 Range(“D:z”) D列到Z列結束
viii. Range(Range(“A1”),Range(A2)) 引用A1-A2的地區
ix. Cells(行,列) 如果一個參數 先行後列使用
i) 當前選區和作用儲存格 Selection ActiveCell
利用Active 改變選區 活動與當前選區只能用於當前工作表
j) Names 利用名稱前導參照或地區
Names.Add [A1],[A2:A7] 參數1為各列的標題參數2為標題意外的資料區域
定義名稱後,在名稱管理器中羅列出來
CreateNames(Top.left,bottom,right,) 使用上 左,下,右的標題名稱
定義地區名稱 直接使用Range(名稱) 訪問到
k) UsedRange和CurrentRegion
Sheet.UsedRange 已用地區,使用過的儲存格範圍
Sheet. CurrentRegion目前範圍,
l) specialCells 按條件引用地區
儲存格對象. specialCells(儲存格類型[,value])
儲存格類型有兩種:
xlCellTypeAlFormatConditions 任意儲存格類型
xlCellTypeAlValidation 帶有驗證條件的儲存格 -4172
xlCellTypeBlanks 空儲存格 -4174
xlCellTypeComments 含注釋的儲存格 4
xlCellTypeConstants 含常量的儲存格 -4144
xlCellTypeFormulas 含公式的儲存格 -4123
xlcellTypeSameFormatConditions 含有相同格式的儲存格 -4173
xlCellTypeSameValidation 含有相同驗證條件的儲存格 -4175
xlCellTypeVisible 所有可見的儲存格 12
m) CurrentArray 引用數組地區
儲存格是否存在數組, Range().CurrentArray 如果不是則出錯
n) Resize 重設地區大小
Resize(RowSize,ColumnSize) 調整指定地區的大小, 行數 列數 如果只有一個參數,則表示將選中地區重設為一行,而列數保持不變
o) Offset 根據位移量引用地區
Range.Offset(RowOffset,ColumnOffset) 行位移 列位移 都是可選 儲存格對象調用
p) Union 儲存格的合集
儲存格合計是將多個儲存格或者地區和平為一個地區 是application的對象
Application.union([A2:B2],[D3:G4]) 引用新地區
q) Intersect 儲存格範圍的交集
Application.Intersect([A1:A10],[2:2]) 表示第二行的交界處是A2
r) End : 引用來源區域的地區尾端的儲存格
按下Ctrl+方向鍵迅速將儲存格一直一用地區的邊緣,
Range.End(Direction)
參數列表
XlDown 向下 -4121
xlToleft 向左 -4159
xlToRight 向右 -4161
xlUp 向上 -4162