1.VBA 常用的對(duì)象
Application 代表Excel應(yīng)用程序
Workbook 代表Excel中的工作簿,一個(gè)Workbook對(duì)象代表一個(gè)工作簿文件
Worksheet 代表Excel中的工作表,一個(gè)Worksheet對(duì)象代表工作簿里的一張普通工作表
Range 代表Excel中的單元格,可以是單個(gè)單元格,也可以是單元格區(qū)域
2.Application
打開對(duì)象模型,最頂端的Application對(duì)象是起點(diǎn),它代表excel程序本身,就像一棵樹的根,excel里所有的對(duì)象都以它為起點(diǎn)。
①ScreenUpdating 屬性
ScreenUpdating屬性的默認(rèn)值為True,如果設(shè)置為False,Excel不會(huì)講計(jì)算結(jié)果顯示到屏幕上。
②DisplayAlerts 屬性
DisplayAlerts屬性決定在程序運(yùn)行中是否顯示警告信息,默認(rèn)值為True,如果不想在程序運(yùn)行時(shí)被提示和警告信息打擾,可以在程序開始時(shí)將屬性設(shè)為False。但如果在程序中修改了該屬性為False,在程序結(jié)束前記得將它設(shè)回True。
③EnableEvents屬性
可以通過設(shè)置Application對(duì)象的EnableEvents屬性來啟用或禁用事件。(事件是能被excel認(rèn)識(shí)的一個(gè)操作動(dòng)作)
EnableEvents屬性為False后,當(dāng)選中單元格后,excel不會(huì)再自動(dòng)運(yùn)行程序,即禁用了該程序。
④WorksheetFunction屬性
WorksheetFunction屬性用于調(diào)用部分工作表函數(shù)。
3.Workbook
①引用單個(gè)工作簿
a.利用索引號(hào)引用,如:Workbooks.Item(3);b.利用工作簿名引用工作簿,如:Workbooks("Book1")
②實(shí)際操作
Workbooks.Add ?創(chuàng)建一個(gè)工作簿文件
Workbooks.Open ?打開一個(gè)excel文件
Workbooks.Activate ?激活一個(gè)工作簿文件
Workbooks.Save ?保存工作簿
Workbooks.Close ?關(guān)閉所有打開的工作簿? ? ? Workbooks("Book1").Close ?關(guān)閉"Book1"
Workbooks("Book1").Close savechanges:=True ?關(guān)閉并保存修改
4.Worksheet
①引用工作表 ? ?Worksheets("Sheet1") 引用工作簿里標(biāo)簽名稱為“sheet1”的工作表
? Sheet1.Range("A1")=100 在指定工作表的A1單元格輸入100 [Sheet1為代碼名稱]
②新建工作表 ?Worksheets.Add
③刪除工作表 Worksheets.Delete
④激活工作表 Worksheets(1).Activate? Worksheets(1).Select
⑤復(fù)制工作表 Worksheets(1).Copy
⑥移動(dòng)工作表 Worksheets("sheet1").Move before:=Worksheets("sheet3") ?將sheet1移到sheet3前面
⑦隱藏或顯示工作表?
隱藏 Worksheets("sheet1").Visible=False / Worksheets("sheet1").Visible=0 / Worksheets("sheet1").Visible=x|sheetHidden
顯示 Worksheets("sheet1").Visible=True? / Worksheets("sheet1").Visible=1 / Worksheets("sheet1").Visible=-1 / Worksheets("sheet1").Visible=x|sheetVisible
5.Sheets 與 Worksheets
Sheets 集合包含更多類型的工作表,所以其包含的方法和屬性比Worksheets集合多。
6.Range
①Range("A1:A10") ?活動(dòng)工作表A1:A10的單元格
②dim n as string?
n="B1:B10"
Range(n)=100 ?n表示單元格地址的字符串變量
③如果單元格已經(jīng)被定義為名稱,參數(shù)還可以表示名稱名的字符串或字符串變量,如:Range("date").Value=100
④如果要引用多個(gè)不連續(xù)的區(qū)域,可以在各區(qū)域間添加逗號(hào),如:Range("A1:A10,A4:E5,C3:D8")
⑤如果想引用相交區(qū)域(公共區(qū)域),可以在多個(gè)區(qū)域間添加空格,如:Range("B1:B10? A4:D8") 還可以使用兩個(gè)參數(shù)來引用兩個(gè)區(qū)域圍城的矩形區(qū)域,如:Range("B1:B10"," ?D4:D8")
⑥Worksheet(或Range)對(duì)象的Cells屬性
這是引用Range對(duì)象的另一種形式,返回指定工作表或單元格區(qū)域中指定行與列相交的單元格。? activesheet.cells(3,4)與activesheet.cells(3,"D") 相同,均為第3行與第4列(即D列)相交的單元格(D3).cells可以只使用一個(gè)參數(shù),如:cells(2),2是索引號(hào),索引號(hào)告訴VBA現(xiàn)在引用的是activesheet中的第2個(gè)單元格。
如果引用的是worksheet 對(duì)象的cells屬性,在excel2003中索引號(hào)的值為1到16777216(65536行×256列)。單元格從左往右,從上到下的順序編號(hào),即A1為第1個(gè)單元格,B1為第2個(gè)單元格,C1為第3個(gè)單元格……A2為第257個(gè)單元格……
如果引用的是range對(duì)象的cells屬性,索引號(hào)的范圍為1到這個(gè)單元格區(qū)域包含的單元格個(gè)數(shù)。但索引號(hào)可以大于單元格區(qū)域里的單元格個(gè)數(shù),如果索引號(hào)大于單元格個(gè)數(shù),系統(tǒng)會(huì)自動(dòng)將單元格區(qū)域在行方向上進(jìn)行擴(kuò)展(列數(shù)不變),然后再引用。
如果不適用任何參數(shù),cells屬性將返回指定對(duì)象中的所有單元格。
range屬性能引用多個(gè)單元格,而cells屬性只能引用一個(gè)單元格。
引用整行:Rows("3:3") ?'第三行,Rows("3:5") ?'第3到第5行。
引用整列:Columns("F:G") ?'F列到G列 ? ? ?Columns(6) ?'第6列
⑦Offset屬性
Range("A1").offset(2,3) ?'從A1單元格出發(fā),向下移動(dòng)2行,向右移動(dòng)3列。修改Offset的參數(shù)可以控制移動(dòng)的方向和距離。如果參數(shù)是正數(shù),表示向下或向右移動(dòng);如果參數(shù)為負(fù)數(shù),表示向上或向左移動(dòng);如果參數(shù)為0,則不移動(dòng)。
⑧Resize屬性
使用Range對(duì)象的Resize屬性擴(kuò)大或縮小指定的單元格區(qū)域,得到一個(gè)新的單元格區(qū)域。
Range("B2").Resize(5,4) '將B2單元格擴(kuò)大為B2:E6 ? Resize(a,b)表示新區(qū)域有a行,b列
⑨End屬性
End屬性的參數(shù),x|ToLeft(向左移動(dòng)) ?x|ToRight(向右移動(dòng)) ?x|Up(向上移動(dòng)) x|Down(向下移動(dòng))