|
使用VBA在Excel環(huán)境下開發(fā)應(yīng)用程序,實(shí)際就是訪問和控制Excel各個(gè)對(duì)象的過程。 Excel提供了對(duì)象瀏覽器(視圖→對(duì)象瀏覽器)(F2):
1 VBA對(duì)象在Excel中,對(duì)象是指一組屬性及這組屬性上的專用操作的封裝體。屬性可以是一些數(shù)據(jù),也可以是另一個(gè)對(duì)象。 如何用代碼表示對(duì)象?VBA用名詞來表示對(duì)象,用動(dòng)詞來表示對(duì)象的方法; 當(dāng)對(duì)象是一個(gè)容器時(shí),它會(huì)包含若干子對(duì)象,使用序號(hào)參數(shù)引用集合中的子對(duì)象;VBA的對(duì)象具有層次性,如:
每個(gè)對(duì)象模型都包含兩種對(duì)象模型:集合對(duì)象與個(gè)體對(duì)象,如Workbooks、workbook; 常用對(duì)象的寫法
以上對(duì)象部分支持復(fù)數(shù)形式(集合),如WorkSheets。集合對(duì)象通常有Count、Add等方法;可以使用循環(huán)遍歷集合中的對(duì)象。 如何自動(dòng)調(diào)用屬性和方法?名稱后加一個(gè)小圓點(diǎn),如:
1.1 設(shè)置對(duì)象屬性 1.1.1 設(shè)置屬性值 對(duì)象名.屬性名 = 屬性值表達(dá)式 Sheet1.Range("A1").value = "test" 1.1.2 讀取屬性值 變量名 = 對(duì)象名.屬性名
1.2 調(diào)用對(duì)象方法 對(duì)象名.方法名稱 Sheet1.Range("A1").clear 1.3 對(duì)象變量和數(shù)組 變量和數(shù)組除了直接存儲(chǔ)值,還可以引用對(duì)象。將對(duì)象分配給變量的優(yōu)點(diǎn)如下:
2 VBA對(duì)象的事件VBA對(duì)象除了屬性和方法以外,還有事件。 事件的價(jià)值在于讓代碼按預(yù)定的條件自動(dòng)執(zhí)行;事件所關(guān)連的過程將在事件發(fā)生時(shí)自動(dòng)執(zhí)行,所以事件也稱為自動(dòng)化過程,它不需要人工調(diào)用,而且事件發(fā)生時(shí),代碼也隨之執(zhí)行,可見對(duì)象的事件賦予了對(duì)象更靈活的特征。 可以想像一下事件對(duì)于編程的重要性,以住需要單擊菜單,鍵入快捷鍵來執(zhí)行過程,而配合事件時(shí)可自動(dòng)化執(zhí)行,只要滿足條件即可執(zhí)行相應(yīng)的代碼; 事件的本質(zhì)是對(duì)象在某些內(nèi)部操作時(shí)允許開發(fā)者執(zhí)行自定義操作; Excel事件包括:
每個(gè)事件都依附在事件的全體對(duì)象之上; 事件過程的名稱包含有兩項(xiàng)內(nèi)容:對(duì)象和動(dòng)作;在代碼窗口的上方有兩個(gè)下拉列表,以下兩項(xiàng)組合成事件的名稱:
多數(shù)事件過程都有參數(shù),這些參數(shù)通常與觸發(fā)事件的條件相關(guān); 事件過程的參數(shù)是不能修改的,事件過程的名稱則允許修改;
3 對(duì)象的選擇和引用3.1 對(duì)象的層次與引用方式
3.2 Range對(duì)象
3.3 圖形對(duì)象Shapes、DrawingObjects 3.4 表對(duì)象Sheets
3.5 Selection對(duì)象
4 Range對(duì)象和Worksheet對(duì)象的Select(選定)和Activate(激活)方法的區(qū)別Range對(duì)象和Worksheet對(duì)象都有Select(選定)和Activate(激活)方法,其區(qū)別和聯(lián)系如下: 4.1 從功能上來說,Select代表選定對(duì)象,Activate代表激活對(duì)象。 4.2 從數(shù)量上來說,Select可以選定多個(gè)對(duì)象,Activate只能激活一個(gè)對(duì)象。 4.3 對(duì)于單個(gè)對(duì)象,Select和Activate是一樣的。 4.4 Activate的對(duì)象必定在Select對(duì)象之中。當(dāng)選定了多個(gè)對(duì)象時(shí),其中某個(gè)對(duì)象必定是激活的對(duì)象。在已經(jīng)Select的對(duì)象中,可以任意指定Activate的對(duì)象。如果Activate了當(dāng)前Select對(duì)象之外的對(duì)象,則相當(dāng)于重新執(zhí)行了一次Select并激活。 4.5 在每次重新Select之后,則系統(tǒng)會(huì)自動(dòng)Activate其中的某個(gè)對(duì)象。 4.6 一般的寫法:
5 單元格區(qū)域的端點(diǎn)選擇(B5:G17)5.1 選取B列第一個(gè)非空單元格
5.2 選取B列最后一個(gè)非空單元格 Range("B65536".End(xlUp).Select 5.3 選取11列最左邊非空單元格
5.4 選取第17行最右邊非空單元格 Range("IV17").End(xlToLeft).Select (end()方法單元格的選取,從空到非空,從非空到空;) 6 已選取單元格區(qū)域范圍和大?。˙5:D14)6.1 返回選取區(qū)域的總行數(shù)和總列數(shù) Selection.Rows.count Selection.Columns.count 6.2 返回選取區(qū)域的第一行的行號(hào) Selection.Row 6.3 返回選取區(qū)域左上角的單元格 Selection.Range("A1").Address 6.4 返回選取區(qū)域右上角的單元格 Cells(Selection.Row,Selection.Column+Selection.Columns.Count-1).Address 6.5 返回選取區(qū)域左下角的單元格 Cells(Selection.Row+Selection.Row.Count-1,Selection.Column).Address 6.6 返回選取區(qū)域右下角的單元格 Selection.Cells(Selection.Cells.count).Address 7 選取全部單元格的方法7.1 Cells.select 7.2 Rows.select 7.3 Columns.select 8 選擇特定單元格8.1 選取當(dāng)前已使用的單元格:ActiveSheet.UsedRange.Select 8.2 選取的指定單元格相鄰的區(qū)域:Range("address").CurrentRegion.Select 8.3 按條件引用區(qū)域(選取特定內(nèi)容單元格):Range("address").SpecialCells(單元格類型變量) 如:選擇某一列的全部空行:Columns(1).specialCells(xlCellTypeBlanks).EntireRow
9 按偏移量重置區(qū)域引用Range對(duì)象的Offset屬性可以返回一個(gè)Range對(duì)象,代表位于指定單元格區(qū)域的一定的偏移量位置上的區(qū)域。其具體語法如下: Range.Offset(RowOffset,ColumnOffset) Resize用于調(diào)整指定區(qū)域的大小,返回代表調(diào)整后的區(qū)域。它有具體語法為:Range.Resize(RowSize,ColumnSize) 其中參RowSize代表重置后的行數(shù),ColumnSize代表重置后的列數(shù),兩個(gè)參數(shù)皆為可選參數(shù)。 Range.Offset(RowOffset,ColumnOffset) Offset(A1,2,1,6,3),表示,以A1為參照點(diǎn),偏移(2,1),選取6行3列; Range("A1").Offset(2,1).Resize(6,3).Select Offset參數(shù)更多的是使用變量; 10 模擬Ctrl+方向鍵產(chǎn)生的單元格Range對(duì)象的End屬性正好對(duì)應(yīng)于以上四個(gè)快捷鍵,可以實(shí)現(xiàn)最上端、最下端、最左端和最右端的切換。它的具體語法為: Range.End(Direction) End表示引用源區(qū)域的區(qū)域尾端的單元格 如果活動(dòng)單元格在一個(gè)較大的數(shù)據(jù)區(qū)域中間,按下快捷鍵【Ctrl+上箭頭】、【Ctrl+下箭頭】、【Ctrl+左箭頭】、【Ctrl+右箭頭】可以迅速將當(dāng)前單元格移至已用區(qū)域的邊緣;如果整個(gè)工作表均為空白則可以在最小行、最小列或者最大行、最大列之間切換;如果在空白區(qū)向數(shù)區(qū)域使用同方向的快捷鍵,則可以定位于該行(列)的第一個(gè)或者最后一個(gè)非空單元格。
11 引用當(dāng)前對(duì)象
12 其它引用方式
13 工作表操作13.1 隱藏和顯示工作表
14 工作簿操作Workbooks.Open Filename:="", Password:="" 判斷一個(gè)工作簿是否打開
判斷一個(gè)工作簿的存在
15 Application對(duì)象15.1 用Caption屬性設(shè)置主窗口標(biāo)題欄; 15.2 用StatusBar屬性控制狀態(tài)欄; 15.3 用ScreenUpdating屬性控制屏幕更新; 15.4 用DisplayAlerts屬性控制警報(bào)信息; 15.5 用SendKeys方法模擬鍵盤輸入; 15.6 用OnTime方法定時(shí)執(zhí)行過程; 15.7 用OnKey方法自定義功能鍵; 15.8 用WorksheetFunction屬性調(diào)用內(nèi)置函數(shù) 15.9 用Union方法合并單元格; -End- |
|
|