Excel2007VBA參考大全-讀書筆記ver1.0_第1頁
Excel2007VBA參考大全-讀書筆記ver1.0_第2頁
Excel2007VBA參考大全-讀書筆記ver1.0_第3頁
Excel2007VBA參考大全-讀書筆記ver1.0_第4頁
Excel2007VBA參考大全-讀書筆記ver1.0_第5頁
已閱讀5頁,還剩21頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

作者: 郭棟修改時間: 2011-4-19說明: 創建版本目錄第一章:ExcelVBA基礎 41錄制宏: 42用戶自定義函數 43Excel對象模型 4集合 5屬性 5方法 5事件 54VBA語言 5基本的輸入輸出 5調用函數和子過程 5括號和參數列表 6變量聲明 6變量的作用域和生存期 7變量類型 7對象變量 7做出判斷 7循環 9數組 9運行時錯誤處理 10第二章:Application對象 101全局: 102Active屬性: 103顯示警告: 104屏幕刷新: 105Application的Evaluate方法: 106InputBox: 117狀態欄: 118SendKeys: 119OnTime: 1210OnKey: 1211工作表函數: 1212Caller: 12第三章:工作薄和工作表 121Workbooks集合: 12添加Workbook對象 13從路徑中獲取文件名 13在相同目錄中的文件 13覆蓋現有的工作薄 13保存改變 142Sheets集合: 14工作表(Worksheet) 14工作表的復制和移動 14組合工作表 143Windows對象: 15第四章:使用單元格區域 151Range對象的Activate方法和Select方法: 152Range屬性: 15活動工作表中的單元格區域 16非活動工作表中的單元格區域 16Range對象的Range屬性 16Cells屬性 17Range對象的Item屬性 17在Range中使用Cells 17關于Range對象的Cells屬性 18單個參數的單元格區域引用 183Offset屬性: 184Resize屬性: 185SpecialCells方法: 18確定最后一個單元格 19刪除數字 196CurrentRegion屬性 197End屬性: 198單元格區域求和: 199Columns屬性和Rows屬性: 1910Count屬性 1911Areas屬性 2012Areas集合 2113Union方法和Intersect方法: 2114空單元格: 21第五章:使用名稱 211Name對象 212Names屬性 21Application.Names屬性 22屬性 22屬性 223Name對象的Name屬性: 234命名單元格區域 23創建全局名稱 23創建局部名稱: 235在名稱中存儲值 236存儲數組 247隱藏名字: 248處理命名的單元格區域: 249搜索名稱: 24第六章:數據列表 251結構化數據: 252排序單元格區域 253創建表 254排序表 255自動篩選 25第七章:數據透視表 25第八章:圖表 25第九章:事件過程 25第二十章:使用ADO訪問數據 251結構化查詢語言簡介 252ADO概覽 25ADO與數據源之間傳遞途徑 26ADO對象模型總述 26

VBA是一種面向對象的程序設計語言,與VisualBasic程序設計語言在結構化和處理對象方面相同。VBA(VisualBasicforApplication)。對象模型是可以在應用程序中找到的所有對象的層次結構。例如,Excel對象模型部分,有一個Application對象,Application對象包含Workbook對象,而Workbook對象包含Worksheet對象,Worksheet對象又包含Range對象。模塊事實上只是一個帶有一些特定特性的字處理文檔,可用于幫助編寫和測試代碼。第一章:ExcelVBA基礎1錄制宏:通過宏錄制器可以生成子過程。在VBA中,宏被稱為過程。有兩種類型的過程:子過程和函數過程。2用戶自定義函數FunctionFahrenheit(Centigrade) Fahrenheit=Centigrade*9/5+32EndFuntion3Excel對象模型 集合 Excel自身是一個對象,稱為Application對象。在ExcelApplication對象里,有一個Workbooks集合,包含所有當前打開的Workbook對象。每個Workbook對象有一個Worksheets集合,包含在該工作薄里的Worksheet對象。屬性 屬性是對象的自然特征,可以被度量或量化。例如:每個人都有一個身高屬性一個年齡屬性、一個性別屬性、一個名字屬性等。方法 方法是對象或者在對象中可以執行的動作。事件 對象可以響應事件。如果希望某個對象響應事件,需要在該對象相應的時間過程里輸入VBA代碼。4VBA語言基本的輸入輸出MsgBox輸出:MsgBox(prompt[,buttons][,title][,helpfile,context])通過位置指定參數:MsgBox“打印嗎?”,,“警告!”通過名稱指定參數:MsgBoxTitle:=”警告!”,Prompt:=”打印嗎?”,Buttons:=36指定參數時使用常量:

MsgBoxPrompt:=”打印嗎?”,Title:=”警告!”,Buttons:=vbYesNo+vbQuestion返回值:Answer=MsgBox(Prompt:=”打印嗎?”,Buttons:=vbYesNo+vbQuestion)注意:如果希望獲取函數的返回值,需要在括號里放置所有的參數。如果無需使用返回值,則不應該使用括號。此規則也應用于對象的方法。InputBox輸入:UserName=InputBox(Prompt:=“請輸入您的名字:”)調用函數和子過程OptionExplicit'Start——函數、子過程調用SubMaster()DimSalesDataAsStringSalesData=GetInput(Message:="輸入銷售數據")IfSalesData=FalseThenExitSubPostInputInputData:=SalesData,Target:="B3"EndSubFunctionGetInput(MessageAsString)AsStringDimDataAsStringData=InputBox(Message)IfData=""ThenGetInput=FalseElseGetInput=DataEndFunctionSubPostInput(InputDataAsString,TargetAsString)Range(Target).Value=InputDataEndSub'End——函數、子過程調用括號和參數列表不使用Call語句:僅當調用函數過程并使用該函數過程的返回值時,將參數放置在括號內;當調用函數過程但不使用該函數過程的返回值時,不需要在參數周圍放置括號當調用子過程時,不在參數周圍放置括號關于括號,重要而細微的區別MsgBox(“插入磁盤”)‘MsgBox與(“插入磁盤”)之間有一個空格Response=MsgBox(“插入磁盤”)‘MsgBox與(“插入磁盤”)之間無空格注意:在MsgBox與(“插入磁盤”)之間插入一個空格額外的空格表明括號里面是參數而非參數列表。使用Call語句:A.如果使用Call語句,則必須在傳遞給被調用過程的參數兩邊放置括號變量聲明注意:OptionExplicit僅應用于其出現處的模塊。需要強制變量聲明的每個模塊必須在其聲明部分重復該語句變量的作用域和生存期變量的作用域定義了哪些過程可以使用該變量。(在VBA中,宏被稱為過程。有兩種類型的過程:子過程和函數過程。)變量的生存期定義了變量保存所賦的值多長時間。變量類型聲明變量類型DimSalesDataAsDouble,IndexAsInteger,StartDateAsDate聲明函數和參數類型FunctionIsHoliday(WhichDayAsDate)AsBooleanSubMarine(CrewSizeAsInteger,FuelCapacityAsDouble)常量ConstVersionAsString=“”對象變量創建對象變量引用對象Set語句用于將一個對象引用賦值給一個對象變量。

'Start——對象變量SubObjectVariable()DimrngAsRangeSetrng=ThisWorkbook.Worksheets("Sheet1").Range("C10")rng.Value=InputBox("輸入一月的銷售量")rng.Offset(-1,0).Value="一月銷售量"EndSub'End——對象變量做出判斷If語句If語句提供三種形式:IIf函數、單行的If語句以及If結構。A.IIf函數FunctiondTax(dProfitBeforeTaxAsDouble)AsDoubledTax=IIf(dProfitBefore>0,0.3*dProfitBeforeTax,0)EndFunctionB.單行的If語句FunctiondTax2(dProfitBeforTaxAsDouble)AsDoubleIfdProfitBeforTax>0ThendTax2=0.3*dProfitBeforeTaxElsedTax2=0EndFunctionC.If結構FunctiondTax3(dProfitBeforTaxAsDouble)AsDoubleIfdProfitBeforTax>0ThendTax3=0.3*dProfitBeforeTaxElsedTax3=0EndIfEndFunctionSelectCase語句FunctionvPrice1(sProductAsstirng)AsVariantSelectCasesProductCase"蘋果"Case"桔子"vPrice1=15Case"梨子"vPrice1=18CaseElsevPrice1=CVErr(xlErrNA)EndSelectEndFunctionFunctionvPrice2(sProductAsstirng)AsVariantSelectCasesProductCase"蘋果Case"桔子":vPrice2=15Case"梨子":vPrice2=18CaseElse:vPrice2=CVErr(xlErrNA)EndSelectFunctionvFare(iAgeAsInteger)AsVariantSelectCaseiAgeCase0To3,Is>65vFare=0Case4To15vFare=10Case16To65vFare=20CaseElsevFare=CVErr(xlErrNA)EndSelectEndFunction循環Do…Loop例子省略For…Next例子省略數組數組數組是可以包含一個以上數據項的VBA變量,通過在名稱后面包含括號聲明數組。在括號里放置整數,定義數組中元素的個數。數組的定義

DimavData(2)AsInteger‘一共有avData(0),avData(1),avData(2)三個元素

DimavData(1To2)AsInteger‘一共有avData(1),avData(2)兩個元素數組元素賦值

avData(0)=1

avData(1)=10

avData(2)=100

DimavDataAsVariant

avData=Array("North","South","East","West")數組函數

LBound,UBoundSubArray1()DimaiData(10)AsIntegerDimsMessageAsString,iAsIntegerFori=LBound(aiData)ToUBound(aiData)aiData(i)=iNextisMessage="???T="&LBound(aiData)&vbCrsMessage=sMessage&"é??T="&UBound(aiData)&vbCrsMessage=sMessage&"?a??êy="&WorksheetFunction.Count(aiData)&vbCrsMessage=sMessage&"?a??oí="&WorksheetFunction.Sum(aiData)MsgBoxsMessageEndSub多維數組多維數組定義

DimavData(10,20)AsVariant

DimavData(1To10,1To20)多維數組函數

DimavDataAsVariantLBound(aiData,1)ToUBound(aiData,2) 動態數組通過忽略數組維數聲明一個動態數組

DimasData()AsString可以在運行時使用ReDim語句聲明所需大小,因而可以使用變量定義索引值的范圍:

ReDimavData(iRows,iColumns)

ReDimavData(iminRowToiMaxRow,iminColToimaxCol)運行時錯誤處理捕獲錯誤OnErrorGotoLineLabel獲取錯誤信息Err對象可以獲取到錯誤信息。Err對象的Number屬性返回錯誤號,Description

屬性返回相關的報錯信息忽略錯誤Resume語句表現為三種形式:Resume執行導致錯誤的語句ResumeNext返回導致錯誤語句的下一條語句并執行該語句,從而跳過了有問題的語句;ResumeLineLabel跳轉到代碼中指定的行標簽處,選擇從何處恢復執行恢復錯誤處理OnErrorGoTo0第二章:Application對象1全局:Application對象是全局對象,它的許多屬性和方法也是全局的成員。2Active屬性:下面的Application屬性是全局的屬性,允許引用活動的對象:ActiveCell、ActiveChart、ActivePrinter、ActiveSheet、ActiveWindow、ActiveWorkbook、Selection。3顯示警告:設置DisplayAlerts屬性為False,可以屏蔽掉大多數警告。當屏蔽一個警告對話框時,自動執行該對話框中默認的按鈕相關聯的操作。

例如:Application.DisplayAlerts=False

ActiveSheet.Delete

Application.DisplayAlerts=True4屏幕刷新:Application.ScreenUpdating=False5Application的Evaluate方法:將一個MicrosoftExcel名稱轉換為一個對象或者一個值。語法表達式.Evaluate(Name)表達式

一個代表Application對象的變量。參數名稱必選/可選數據類型描述Name必選Variant使用MicrosoftExcel命名約定的對象名稱。返回值

Variant說明該方法可使用下列MicrosoftExcel名稱類型:A1格式引用。可以通過A1格式表示法引用單個單元格。所有引用均視為絕對引用。區域。在引用中可以使用區域、交集和聯合運算符(分別為冒號、空格和逗號)。定義的名稱。可用宏語言指定任何名稱。外部引用。可以使用!運算符引用另一工作簿中的單元格或已定義的名稱,例如,Evaluate("[BOOK1.XLS]Sheet1!A1")。圖表對象。可以指定任何圖表對象名稱(如“Legend”、“PlotArea”或“Series1”),以訪問該對象的屬性和方法。例如,返回圖例中所用字體的名稱。6InputBox:

Setrng=Application.InputBox(prompt:="請輸入單元格區域",Type:=8)7狀態欄:允許為StatusBar屬性賦一個文本字符串,并將該字符串顯示在Excel屏幕底部狀態欄的左側。SubShowMessage()DimlCounterAsLongForlCounter=0To100000000IflCounterMod1000000=0ThenApplication.StatusBar="ProcessingRecord"&lCounterEndIfNextlCounterApplication.StatusBar=FalseEndSub注意:在過程的結尾,必須將StatusBar屬性值設置為False,返回狀態欄默認操作。否則,最后的消息將會一直停留在狀態欄上。8SendKeys:SendKeys允許發送按鍵到當前活動窗口,用來控制不支持任何其他交互形式的應用程序,例如DDE(DynamicDataExchange)或OLE。9OnTime:使用OnTime方法安排在將來某個時刻運行宏,需要指定該宏運行的日期和時間以及宏的名稱。如果使用Application對象的Wait方法暫停某宏,所有的Excel行為,包括手工交互操作,都將掛起。使用OnTime的優勢在于,當等待運行預設的宏時,允許返回正常的Excel交互操作,包括運行其他的宏。10OnKey:使用OnKey方法將一個宏過程賦給單個按鍵或任意組合鍵。也可以使用該方法禁用組合鍵。SubAssignDown()Application.OnKey"{Down}","DownTen"EndSubSubDownTen()ActiveCell.Offset(10,0).SelectEndSub11工作表函數:在Excel中可以使用兩種內置函數,一組函數是VBA語言的組成部分,另一組函數是Excel工作表函數的子集(WorksheetFunction對象用作可從VisualBasic中調用的MicrosoftExcel工作表函數的容器。)。一般情況下,如果一個VBA函數與一個Excel函數有著相同的用途,那么該Excel函數就不能直接用于VBA宏(但可以使用Evaluate方法訪問任何Excel函數)。12Caller:Application對象的Caller屬性返回調用或執行宏過程的對象的引用,SelectCaseTypeName(Application.Caller)Case"Range"Case"String"Case"Error"v="Error"CaseElsev="unknown"EndSelectMsgBox"caller="&v第三章:工作薄和工作表1Workbooks集合:Workbooks集合由當前所有在內存里打開的Workbook對象組成。添加Workbook對象向Workbooks集合中添加對象的方式有很多種,可以基于Workbook對象的默認屬性創建新的空工作薄,或基于模板文件創建新工作薄,還可以打開一個現有的工作薄文件。基于默認的工作薄創建新的空工作薄,使用Workbooks集合的Add方法Add方法允許為新工作薄指定模板用Open方法可以向Workbooks集合中添加現有的工作薄文件。從路徑中獲取文件名當在VBA中處理工作薄時,經常需要指定目錄路徑和文件名稱。某些任務只需要知道路徑,例如已設置了默認的目錄。某些任務只需要知道文件名稱,例如希望激活某個已打開的工作薄。而另一些任務中,既需要路徑也需要文件名,例如希望打開已存在但不在活動目錄中的工作薄文件。Setwkb=Workbooks.Open(FileName:=”D:\Project\VBAStudy\Capture3\test.xlsx”)MsgBoxwkb.Name‘

MsgBoxwkb.Path‘返回D:\Project\VBAStudy\Capture3\MsgBoxwkb.FullName‘返回D:\Project\VBAStudy\Capture3在相同目錄中的文件ThisWorkbook是對包含該代碼的工作薄的引用。無論該工作薄位于哪兒,ThisWorkbook的Path屬性都將提供必需的路徑以定位相關的文件。覆蓋現有的工作薄FunctionbFileIsExists(sFileAsString)AsBooleanIfDir(sFile)<>""ThenbFileIsExists=TrueEndFunctionSubCreateNextFileName()DimwkbAsWorkbookDimiAsIntegerDimsFNameAsStringSetwkb=Workbooks.Add(Template:="D:\Project\VBAStudy\Capture3\Test.xlsx")i=0Doi=i+1sFName="D:\Project\VBAStudy\Capture3\Test"&i&".xlsx"LoopWhilebFileIsExists(sFName)Application.DisplayAlerts=Falsewkb.SaveAsFilename:=sFNameApplication.DisplayAlerts=TrueEndSub保存改變SubCloseWorkbook()DimwkbAsWorkbookSetwkb=Workbooks.Open(Filename:="D:\Project\VBAStudy\Capture3\Test.xlsx")Range("A1").Value=Format(Date,"dddmmmdd,yyyy")wkb.CloseSaveChanges:=TrueEndSub2Sheets集合:在Workbook對象里,有一個Sheets集合,其成員是Worksheet對象或Chart對象。Worksheet對象與Chart對象也分別屬于他們自己的集合——Worksheets集合和Charts集合。Charts集合僅包括圖表工作表。嵌入在工作表中的圖表不是Charts集合的成員,而是包含在ChartObject對象中,是工作表的ChartObjects集合中的成員。工作表(Worksheet)可通過在Sheets集合和Worksheets集合里的名稱或索引值引用工作表。如果已知要處理的工作表的名稱,可以通過名稱在Worksheets集合里指定工作表。注意:Worksheet對象的Index屬性返回的是Sheets集合中的索引值,不是Worksheets集合中的索引值。(Sheets集合中的索引值和Worksheets集合中的索引值是不同的。因為,Sheets集合中也包括Chart對象即圖表工作表)工作表的復制和移動Worksheet對象的Copy方法和Move方法允許每次復制或移動一個或者多個工作表。他們都提供了兩個可選參數,允許指定該操作的目的位置,即某指定的工作表之前或之后。如果不使用任何參數,那么將復制或者移動工作表到一個新工作薄中。注意:Copy方法和Move方法不返回任何值或引用組合工作表在VBA中,可以使用Worksheets集合的Select方法并聯合Array函數來組合工作表。此外,也可以使用Worksheet對象的Select方法創建工作表組。按正常的方式選擇第1個工作表,通過使用Select方法并將其Replace參數設置為False將其他工作表添加到組中。3Windows對象:Window對象代表窗口。說明許多工作表特征(如滾動條和標尺)實際上是窗口的屬性。Window對象是Windows集合的成員。Application對象的Windows集合包含應用程序中的所有窗口,而Workbook對象的Windows集合只包含指定工作簿中的窗口。示例使用Windows(index)(其中index是窗口名稱或索引號)可返回一個Window對象。下例最大化活動窗口。VisualBasicforApplicationsWindows(1).WindowState=xlMaximized注意,活動窗口總是Windows(1)。第四章:使用單元格區域Range對象可以是單個單元格、一個矩形的單元格區域或者許多矩形單元格區域(不相鄰的區域)的聯合。Range對象包含在Worksheet對象里。Excel對象模型不支持跨多個工作表的三維Range對象,在單個Range對象里每個單元格必須位于同一個工作表中。1Range對象的Activate方法和Select方法:使用Activate方法激活一個單元格(盡管使用Activate方法時允許指定多個單元格,但只能激活一個單元格),使用Select方法選擇單元格區域。2Range屬性:返回一個Range對象,它代表一個單元格或單元格區域。語法表達式.Range(Cell1,Cell2)表達式

一個代表Application對象的變量、一個代表Worksheet對象的變量或一個代表Range對象的變量。參數名稱必選/可選數據類型描述Cell1必選Variant區域名稱。必須為采用宏語言的A1樣式引用。可包括區域操作符(冒號)、相交區域操作符(空格)或合并區域操作符(逗號)。也可包括貨幣符號,但它們會被忽略掉。您可以在區域中任一部分使用局部定義名稱。如果使用名稱,則假定該名稱使用的是宏語言。Cell2可選Variant區域左上角和右下角的單元格。可以是一個包含單個單元格、整列或整行的Range對象,或者也可以是一個用宏語言為單個單元格命名的字符串。說明如果在沒有對象識別符時使用,則該屬性是的快捷方式(它返回活動表的一個區域,如果活動表不是一張工作表,則該屬性無效)。當應用于Range對象時,該屬性與Range對象相關。例如,如果選中單元格C3,那么Selection.Range("B1")返回單元格D3,因為它同Selection屬性返回的Range對象相關。此外,代碼ActiveSheet.Range("B1")總是返回單元格B1。活動工作表中的單元格區域可以使用Application對象的Range屬性引用活動工作表中的Range對象。因為Application對象的Range屬性是全局的成員,所以可以省略Application對象的引用。

Application.Range(“B2”)

Range(“B2”)非活動工作表中的單元格區域如果希望引用非活動工作表上的單元格區域,可簡單地使用所需Worksheet對象的Range屬性。Worksheets(“Sheet2”).Range(“C10”)

如果包含該工作表和單元格區域的工作薄處于非活動狀態,則需要進一步指定對Range對象的引用:

Workbooks(“”).Worksheets(“Sheet1”).Range(“C10”)注意:當把Range屬性作為另一個Range屬性的參數時,還需要使用完整的限定屬性:Subtest2()Sheets("Sheet1").Range(_Sheets("Sheet1").Range("A1"),_Sheets("Sheet1").Range("A10")_).Interior.ColorIndex=3EndSubRange對象的Range屬性Range(“C3”).Range(“B1”)‘該代碼引用單元格D3Cells屬性使用Application對象、Worksheet對象或Range對象的Cells屬性,將引用一個包含Worksheet對象或Range對象里所有單元格的Range對象。Range對象的Item屬性Range.Item屬性返回一個Range對象,它代表對指定區域某一偏移量處的區域。語法表達式.Item(RowIndex,ColumnIndex)表達式

一個代表Range對象的變量。參數名稱必選/可選數據類型描述RowIndex必選Variant要訪問的單元格的索引號,順序為從左到右,然后往下。Range.Item(1)返回區域左上角單元格;Range.Item(2)返回緊靠左上角單元格右側的單元格。ColumnIndex可選Variant指明要訪問的單元格所在列的列號的數字或字符串,1或“A”表示區域中的第一列。說明語法1使用行號和列號或列標作為索引參數。關于此語法的詳細信息,請參閱Range對象。RowIndex和ColumnIndex參數為相對偏移量。換句話說,如果RowIndex指定為1,則返回區域內第一行中的單元格,而非工作表的第一行。例如,如果選定區域為單元格C3,則Selection.Cells(2,2)返回單元格D4(使用Item屬性可在原始區域之外進行索引)。注意:因為Item屬性是Range對象的默認屬性,所以下面的代碼是等效的:Cells.Item(2,2)Cells.Item(2,”B”)Cells(2,2)Cells(2,”B”)在Range中使用CellsRange(Cells(1,1),Cells(10,5))‘該代碼引用活動工作表的A1:E10WithSheets(“Sheet1”).Range(.Cells(1,1),.Cells(10,5)).Font.Bold=TrueEndWith‘注意確保完整的限定Cells屬性關于Range對象的Cells屬性Range對象的Cells屬性提供了一種比較好的方法,根據某單元格相對于起始單元格的位置或在某單元格塊中的相對行列位置來實現引用。Range(“D10:G20”).Cells(2,3)‘該代碼引用單元格F11事實上,不需要限制所引用的單元格在Range對象的范圍內,也可以引用原單元格區域之外的單元格,這就意味著實際上只需要使用該Range對象左上角的單元格作為起始點。

Range(“D10”).Cells(2,3)‘該代碼引用單元格F11注意:Range(“D10”).Cells(2,3)Range(“D10”).Item(2,3)Range(“D10”)(2,3)等價單個參數的單元格區域引用引用單元格的簡寫方法既可接受兩個參數(如:Range(“D10”).Item(2,3)),也可以接受單個參數。在多于一行的單元格區域里,如果索引值超過了單元格區域的總列數,引用將在單元格區域指定的列內,自動向下換行到合適的位置。Range(“D10:E11”)(2)‘該代碼引用單元格E10Range(“D10:E11”)(3)‘該代碼引用單元格D11Range(“D10:E11”)(4)‘該代碼引用單元格E11Range(“D10:E11”)(5)‘該代碼引用單元格D12Range("D10:E11")(6).Select'‘該代碼引用單元格E12Range("D10:E11")(7).Select'‘該代碼引用單元格D133Offset屬性:Range對象的Offset屬性返回與Cells屬性相似的對象,但其中有兩點不同。

第一點不同是Offset參數基于0而不是基于1,正如Offset的詞義(偏移量)所暗示的。

Range(“A10”).Cells(1,1)Range(“A10”).Offset(0,0)‘這兩條代碼都引用A10單元格第二點不同是Cells產生的Range對象只是一個單元格,而Offset屬性引用的Range對象是一個單元格區域,與原單元格區域的行數和列數相同。

Range(“A1:B2”).Offset(1,1)‘該代碼引用B2:C34Resize屬性:用Range對象的Resize屬性,可引用一個單元格區域,它的左上角單元格與原區域相同,但行數與列數不同。下面的代碼引用D10:E10

Range(“D10:F20”).Resize(1,2)5SpecialCells方法:確定最后一個單元格SetrngLast=Range(“A1”).SpecialCells(xlCellTypeLastCell)刪除數字OnErrorResumeNextForEachrngInCells.SpecialCells(xlCellTypeConstants,xlNumbers)Nextrng6CurrentRegion屬性7End屬性:End屬性模擬<Ctrl+箭頭鍵>的操作。下面的代碼引用列A中“A1”單元格下面連續數據單元格中的最后一個數據單元格,或者列A中“A1”單元格下面連續非數據單元格中的最后一個非數據單元格的下一位置。(依據第一句話直接在Excel模擬End屬性的功能)Range.End屬性返回一個Range對象,該對象代表包含源區域的區域尾端的單元格。等同于按鍵End+向上鍵、End+向下鍵、End+向左鍵或End+向右鍵。Range對象,只讀。語法表達式.End(Direction)表達式

一個代表Range對象的變量。參數名稱必選/可選數據類型描述Direction必選XlDirection所要移至的方向。8單元格區域求和:9Columns屬性和Rows屬性:Columns和Rows是Application、Worksheet和Range對象的屬性,返回對工作表或者單元格區域中所有列或行的引用。在每種情形中,返回的引用都是一個Range對象。10Count屬性Range.Count屬性返回一個Long值,它代表集合中對象的數量。語法表達式.Count表達式

一個代表Range對象的變量。示例

此示例顯示Sheet1上選定區域中的列數。此示例還將檢測選定區域中是否包含多重選定區域,如果包含,則對多重選定區域中每一子區域進行循環。VisualBasicforApplicationsSubDisplayColumnCount()DimiAreaCountAsIntegerDimiAsIntegerWorksheets("Sheet1").ActivateIfiAreaCount<=1ThenMsgBox"Theselectioncontains"&Selection.Columns.Count&"columns."ElseFori=1ToiAreaCountMsgBox"Area"&i&"oftheselectioncontains"&_Selection.Areas(i).Columns.Count&"columns."NextiEndIfEndSub11Areas屬性Range.Areas屬性返回一個Areas集合,該集合表示多重區域選擇中的所有區域。只讀。語法表達式.Areas表達式

一個代表Range對象的變量。說明對于單一選擇區域,Areas屬性返回只包含一個對象的集合,即原始Range對象本身。對于多重選擇區域,Areas屬性返回一個集合,該集合包含與每個選定區域相對應的對象。示例本示例在用戶選定多個區域并試圖執行某一命令時顯示提示信息。該示例必須在工作表上運行。12Areas集合Areas集合由選定區域內的多個子區域或連續單元格塊組成的集合。說明沒有單獨的Area對象;Areas集合內的各個成員是Range對象。在Areas集合中,選定區域內每個離散的連續單元格區域都有一個Range對象。如果選定區域內只有一個子區域,則Areas集合包含一個與該選定區域對應的Range對象。13Union方法和Intersect方法:Union和Intersect是Application對象的方法,但是因為他們是<全局>的成員,所以不需要在前面引用Application。當希望從兩個或多個單元格塊中生成一個單元格區域,可使用Union方法。當希望查找兩個或多個單元格區域中共同的單元格,即這些單元格區域的重疊部分,則使用Intersect方法。14空單元格:使用VBA的IsEmpty函數檢測空單元格。第五章:使用名稱1Name對象Name對象代表單元格區域的定義名。名稱可以是內置名稱(如“Database”、“Print_Area”和“Auto_Open”)或自定義名稱。說明應用程序、工作簿和Worksheet對象Name對象是Application、Workbook和Worksheet對象的Names集合的成員。使用Names(index)(其中index是名稱索引號或定義名稱)可返回一個Name對象。索引號表明名稱在集合中的位置。名稱按字母順序從a到z放置,不區分大小寫。Range對象雖然Range對象可以有多個名稱,但Range對象沒有Names集合。將Name與一個Range對象一起使用可從名稱列表(按字母順序排序)中返回第一個名稱。2Names屬性Application.Names屬性Application.Names屬性返回一個代表活動工作簿(workbook)中所有名稱的Names集合。Names對象,只讀。語法表達式.Names表達式

一個代表Application對象的變量。說明在不使用對象識別符的情況下使用此屬性等效于使用。Workbook.Names屬性返回一個Names集合,它代表指定工作簿的所有名稱(包括所有指定工作表的名稱)。Names對象,只讀。語法表達式.Names表達式

一個代表Workbook對象的變量。說明在不使用對象識別符的情況下使用此屬性等效于使用。示例本示例是將Sheet1中的A1單元格的名稱定義為“myName”。VisualBasicforApplicationsActiveWorkbook.Names.AddName:="myName",RefersToR1C1:=_"=Sheet1!R1C1"WWorksheet.Names屬性返回一個Names集合,它代表所有特定于工作表的名稱(使用“WorksheetName!”前綴定義的名稱)。Names對象,只讀。語法表達式.Names表達式

一個代表Worksheet對象的變量。說明在不使用對象識別符的情況下使用此屬性等效于使用。3Name對象的Name屬性:Name.Name屬性返回或設置一個String值,它代表對象的名稱。語法表達式.Name表達式

一個代表Name對象的變量。說明改變Name對象的Name屬性:Names(“Data”).Name=“NewData”4命名單元格區域創建全局名稱可以使用Workbook對象的Names集合的Add方法創建引用單元格區域的全局名稱:Names.AddName:=”Data”,RefersTo:=”=Sheet1!$D$10:$D$12”注意:在定義的范圍之前包含等號并且使用美元符號($)采取單元格的絕對引用。否則,該名稱將引用定義該名稱時相對于活動單元格的相對地址。Names.AddName:=”Data”,RefersTo:=”=$D$10:$D$12”使用Range對象的Name屬性創建全局名稱Range(“A1:D10”).Name=“SalesData”創建局部名稱:A.使用sheet對象的Names集合的Add方法創建引用單元格區域的局部名稱:Sheet1的局部名稱SalesNames.AddName:=”Sheet1!Sales”,RefersTo:=”=Sheet1!$E$10:$E$12”Sheet1的局部名稱CostsRefersTo:”=Sheet1!$F$10:$F$12”Worksheets(“Sheet1”).Names.AddName:=”Costs”,RefersTo:=”=Sheet1!$F$10:$F$12”Worksheets(“Sheet1”).Names.AddName:=”Costs”,RefersTo:=”=$F$10:$F$12”B.使用Range對象的Name屬性創建全局名稱Range(“A1:D10”).Name=“Sheet1!SalesData”5在名稱中存儲值DimvAsVariantNames.AddName:=”StoreNumber”,RefersTo:=v‘在名稱中存儲數字V=“Sales”Names.AddName:=”StoreString”,RefersTo:=v‘在名稱中存儲字符串Names.AddName:=”ItemsInA”,RefersTo:=”=COUNTA($A:$A)”‘在名稱中存儲公式獲取名稱中的值:v=[StoreNumber]6存儲數組SubArrayToName()DimaiArray(1To200,1To3)AsIntegerDimiRowAsInteger,iColumnAsIntegerForiRow=1To200ForiColumn=1To3aiArray(iRow,iColumn)=iRow*iColumnNextiColumnNextiRowNames.Addname:="TestName",RefersTo:=aiArrayEndSubSubNameToArray()DimvArrayAsVariantvArray=[TestName]MsgBoxvArray(200,3)EndSub注意:通過賦值包含數組的名稱給變量而創建的數組下標總是基于1,即使在模塊的聲明區有OptionBase0語句。7隱藏名字:設置其Visible屬性為False,將隱藏該名稱。Names.AddName:=”StoreNumber”,RefersTo:=v,Visible:=FalseNames(“StoreNumber”).Visible=False8處理命名的單元格區域:Range(”Input”)‘Input為單元格區域名稱9搜索名稱:判斷工作薄中是否存在某個名稱;判斷選中的單元格是否被某個名稱引用;判斷選中的單元格區域是否被某個名稱引用;判斷選中的單元格區域中有哪些單元格或單元格區域被某些名稱引用第六章:數據列表1結構化數據:在應用Excel的列表管理工具之前,必須以非常明確的方式配置數據。必須像數據庫表一樣結構化數據,每一列的頂部帶有標題作為字段名稱,并且數據本身必須由單行信息組成,與數據庫記錄等同。包含字段名稱的頂部行稱為標題記錄。2排序單元格區域3創建表ActiveSheet.ListObjects.Add(xlSrcRange,Range(“$B$3:$D$9”),,xlYes).Name=_“Table1”4排序表5自動篩選第七章:數據透視表第八章:圖表第九章:事件過程本章主要介紹工作表事件、圖表工作表事件、工作薄事件以及相關問題。注意:事件過程總是與特定的對象相關并包含在與該對象相關的類模塊中,例如ThisWorkbook模塊、工作表模塊或用戶窗體模塊。不要試圖在標準模塊中放置事件過程。1工作表事件PrivateSubWorksheet_Activate()PrivateSubWorksheet_Be

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論