版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
作者: 郭棟修改時(shí)間: 2011-4-19說(shuō)明: 創(chuàng)建版本目錄第一章:ExcelVBA基礎(chǔ) 41錄制宏: 42用戶自定義函數(shù) 43Excel對(duì)象模型 4集合 5屬性 5方法 5事件 54VBA語(yǔ)言 5基本的輸入輸出 5調(diào)用函數(shù)和子過(guò)程 5括號(hào)和參數(shù)列表 6變量聲明 6變量的作用域和生存期 7變量類型 7對(duì)象變量 7做出判斷 7循環(huán) 9數(shù)組 9運(yùn)行時(shí)錯(cuò)誤處理 10第二章:Application對(duì)象 101全局: 102Active屬性: 103顯示警告: 104屏幕刷新: 105Application的Evaluate方法: 106InputBox: 117狀態(tài)欄: 118SendKeys: 119OnTime: 1210OnKey: 1211工作表函數(shù): 1212Caller: 12第三章:工作薄和工作表 121Workbooks集合: 12添加Workbook對(duì)象 13從路徑中獲取文件名 13在相同目錄中的文件 13覆蓋現(xiàn)有的工作薄 13保存改變 142Sheets集合: 14工作表(Worksheet) 14工作表的復(fù)制和移動(dòng) 14組合工作表 143Windows對(duì)象: 15第四章:使用單元格區(qū)域 151Range對(duì)象的Activate方法和Select方法: 152Range屬性: 15活動(dòng)工作表中的單元格區(qū)域 16非活動(dòng)工作表中的單元格區(qū)域 16Range對(duì)象的Range屬性 16Cells屬性 17Range對(duì)象的Item屬性 17在Range中使用Cells 17關(guān)于Range對(duì)象的Cells屬性 18單個(gè)參數(shù)的單元格區(qū)域引用 183Offset屬性: 184Resize屬性: 185SpecialCells方法: 18確定最后一個(gè)單元格 19刪除數(shù)字 196CurrentRegion屬性 197End屬性: 198單元格區(qū)域求和: 199Columns屬性和Rows屬性: 1910Count屬性 1911Areas屬性 2012Areas集合 2113Union方法和Intersect方法: 2114空單元格: 21第五章:使用名稱 211Name對(duì)象 212Names屬性 21Application.Names屬性 22屬性 22屬性 223Name對(duì)象的Name屬性: 234命名單元格區(qū)域 23創(chuàng)建全局名稱 23創(chuàng)建局部名稱: 235在名稱中存儲(chǔ)值 236存儲(chǔ)數(shù)組 247隱藏名字: 248處理命名的單元格區(qū)域: 249搜索名稱: 24第六章:數(shù)據(jù)列表 251結(jié)構(gòu)化數(shù)據(jù): 252排序單元格區(qū)域 253創(chuàng)建表 254排序表 255自動(dòng)篩選 25第七章:數(shù)據(jù)透視表 25第八章:圖表 25第九章:事件過(guò)程 25第二十章:使用ADO訪問(wèn)數(shù)據(jù) 251結(jié)構(gòu)化查詢語(yǔ)言簡(jiǎn)介 252ADO概覽 25ADO與數(shù)據(jù)源之間傳遞途徑 26ADO對(duì)象模型總述 26
VBA是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,與VisualBasic程序設(shè)計(jì)語(yǔ)言在結(jié)構(gòu)化和處理對(duì)象方面相同。VBA(VisualBasicforApplication)。對(duì)象模型是可以在應(yīng)用程序中找到的所有對(duì)象的層次結(jié)構(gòu)。例如,Excel對(duì)象模型部分,有一個(gè)Application對(duì)象,Application對(duì)象包含Workbook對(duì)象,而Workbook對(duì)象包含Worksheet對(duì)象,Worksheet對(duì)象又包含Range對(duì)象。模塊事實(shí)上只是一個(gè)帶有一些特定特性的字處理文檔,可用于幫助編寫(xiě)和測(cè)試代碼。第一章:ExcelVBA基礎(chǔ)1錄制宏:通過(guò)宏錄制器可以生成子過(guò)程。在VBA中,宏被稱為過(guò)程。有兩種類型的過(guò)程:子過(guò)程和函數(shù)過(guò)程。2用戶自定義函數(shù)FunctionFahrenheit(Centigrade) Fahrenheit=Centigrade*9/5+32EndFuntion3Excel對(duì)象模型 集合 Excel自身是一個(gè)對(duì)象,稱為Application對(duì)象。在ExcelApplication對(duì)象里,有一個(gè)Workbooks集合,包含所有當(dāng)前打開(kāi)的Workbook對(duì)象。每個(gè)Workbook對(duì)象有一個(gè)Worksheets集合,包含在該工作薄里的Worksheet對(duì)象。屬性 屬性是對(duì)象的自然特征,可以被度量或量化。例如:每個(gè)人都有一個(gè)身高屬性一個(gè)年齡屬性、一個(gè)性別屬性、一個(gè)名字屬性等。方法 方法是對(duì)象或者在對(duì)象中可以執(zhí)行的動(dòng)作。事件 對(duì)象可以響應(yīng)事件。如果希望某個(gè)對(duì)象響應(yīng)事件,需要在該對(duì)象相應(yīng)的時(shí)間過(guò)程里輸入VBA代碼。4VBA語(yǔ)言基本的輸入輸出MsgBox輸出:MsgBox(prompt[,buttons][,title][,helpfile,context])通過(guò)位置指定參數(shù):MsgBox“打印嗎?”,,“警告!”通過(guò)名稱指定參數(shù):MsgBoxTitle:=”警告!”,Prompt:=”打印嗎?”,Buttons:=36指定參數(shù)時(shí)使用常量:
MsgBoxPrompt:=”打印嗎?”,Title:=”警告!”,Buttons:=vbYesNo+vbQuestion返回值:Answer=MsgBox(Prompt:=”打印嗎?”,Buttons:=vbYesNo+vbQuestion)注意:如果希望獲取函數(shù)的返回值,需要在括號(hào)里放置所有的參數(shù)。如果無(wú)需使用返回值,則不應(yīng)該使用括號(hào)。此規(guī)則也應(yīng)用于對(duì)象的方法。InputBox輸入:UserName=InputBox(Prompt:=“請(qǐng)輸入您的名字:”)調(diào)用函數(shù)和子過(guò)程O(píng)ptionExplicit'Start——函數(shù)、子過(guò)程調(diào)用SubMaster()DimSalesDataAsStringSalesData=GetInput(Message:="輸入銷售數(shù)據(jù)")IfSalesData=FalseThenExitSubPostInputInputData:=SalesData,Target:="B3"EndSubFunctionGetInput(MessageAsString)AsStringDimDataAsStringData=InputBox(Message)IfData=""ThenGetInput=FalseElseGetInput=DataEndFunctionSubPostInput(InputDataAsString,TargetAsString)Range(Target).Value=InputDataEndSub'End——函數(shù)、子過(guò)程調(diào)用括號(hào)和參數(shù)列表不使用Call語(yǔ)句:僅當(dāng)調(diào)用函數(shù)過(guò)程并使用該函數(shù)過(guò)程的返回值時(shí),將參數(shù)放置在括號(hào)內(nèi);當(dāng)調(diào)用函數(shù)過(guò)程但不使用該函數(shù)過(guò)程的返回值時(shí),不需要在參數(shù)周圍放置括號(hào)當(dāng)調(diào)用子過(guò)程時(shí),不在參數(shù)周圍放置括號(hào)關(guān)于括號(hào),重要而細(xì)微的區(qū)別MsgBox(“插入磁盤(pán)”)‘MsgBox與(“插入磁盤(pán)”)之間有一個(gè)空格Response=MsgBox(“插入磁盤(pán)”)‘MsgBox與(“插入磁盤(pán)”)之間無(wú)空格注意:在MsgBox與(“插入磁盤(pán)”)之間插入一個(gè)空格額外的空格表明括號(hào)里面是參數(shù)而非參數(shù)列表。使用Call語(yǔ)句:A.如果使用Call語(yǔ)句,則必須在傳遞給被調(diào)用過(guò)程的參數(shù)兩邊放置括號(hào)變量聲明注意:OptionExplicit僅應(yīng)用于其出現(xiàn)處的模塊。需要強(qiáng)制變量聲明的每個(gè)模塊必須在其聲明部分重復(fù)該語(yǔ)句變量的作用域和生存期變量的作用域定義了哪些過(guò)程可以使用該變量。(在VBA中,宏被稱為過(guò)程。有兩種類型的過(guò)程:子過(guò)程和函數(shù)過(guò)程。)變量的生存期定義了變量保存所賦的值多長(zhǎng)時(shí)間。變量類型聲明變量類型DimSalesDataAsDouble,IndexAsInteger,StartDateAsDate聲明函數(shù)和參數(shù)類型FunctionIsHoliday(WhichDayAsDate)AsBooleanSubMarine(CrewSizeAsInteger,FuelCapacityAsDouble)常量ConstVersionAsString=“”對(duì)象變量創(chuàng)建對(duì)象變量引用對(duì)象Set語(yǔ)句用于將一個(gè)對(duì)象引用賦值給一個(gè)對(duì)象變量。
'Start——對(duì)象變量SubObjectVariable()DimrngAsRangeSetrng=ThisWorkbook.Worksheets("Sheet1").Range("C10")rng.Value=InputBox("輸入一月的銷售量")rng.Offset(-1,0).Value="一月銷售量"EndSub'End——對(duì)象變量做出判斷If語(yǔ)句If語(yǔ)句提供三種形式:IIf函數(shù)、單行的If語(yǔ)句以及If結(jié)構(gòu)。A.IIf函數(shù)FunctiondTax(dProfitBeforeTaxAsDouble)AsDoubledTax=IIf(dProfitBefore>0,0.3*dProfitBeforeTax,0)EndFunctionB.單行的If語(yǔ)句FunctiondTax2(dProfitBeforTaxAsDouble)AsDoubleIfdProfitBeforTax>0ThendTax2=0.3*dProfitBeforeTaxElsedTax2=0EndFunctionC.If結(jié)構(gòu)FunctiondTax3(dProfitBeforTaxAsDouble)AsDoubleIfdProfitBeforTax>0ThendTax3=0.3*dProfitBeforeTaxElsedTax3=0EndIfEndFunctionSelectCase語(yǔ)句FunctionvPrice1(sProductAsstirng)AsVariantSelectCasesProductCase"蘋(píng)果"Case"桔子"vPrice1=15Case"梨子"vPrice1=18CaseElsevPrice1=CVErr(xlErrNA)EndSelectEndFunctionFunctionvPrice2(sProductAsstirng)AsVariantSelectCasesProductCase"蘋(píng)果Case"桔子":vPrice2=15Case"梨子":vPrice2=18CaseElse:vPrice2=CVErr(xlErrNA)EndSelectFunctionvFare(iAgeAsInteger)AsVariantSelectCaseiAgeCase0To3,Is>65vFare=0Case4To15vFare=10Case16To65vFare=20CaseElsevFare=CVErr(xlErrNA)EndSelectEndFunction循環(huán)Do…Loop例子省略For…Next例子省略數(shù)組數(shù)組數(shù)組是可以包含一個(gè)以上數(shù)據(jù)項(xiàng)的VBA變量,通過(guò)在名稱后面包含括號(hào)聲明數(shù)組。在括號(hào)里放置整數(shù),定義數(shù)組中元素的個(gè)數(shù)。數(shù)組的定義
DimavData(2)AsInteger‘一共有avData(0),avData(1),avData(2)三個(gè)元素
DimavData(1To2)AsInteger‘一共有avData(1),avData(2)兩個(gè)元素?cái)?shù)組元素賦值
avData(0)=1
avData(1)=10
avData(2)=100
DimavDataAsVariant
avData=Array("North","South","East","West")數(shù)組函數(shù)
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多維數(shù)組多維數(shù)組定義
DimavData(10,20)AsVariant
DimavData(1To10,1To20)多維數(shù)組函數(shù)
DimavDataAsVariantLBound(aiData,1)ToUBound(aiData,2) 動(dòng)態(tài)數(shù)組通過(guò)忽略數(shù)組維數(shù)聲明一個(gè)動(dòng)態(tài)數(shù)組
DimasData()AsString可以在運(yùn)行時(shí)使用ReDim語(yǔ)句聲明所需大小,因而可以使用變量定義索引值的范圍:
ReDimavData(iRows,iColumns)
ReDimavData(iminRowToiMaxRow,iminColToimaxCol)運(yùn)行時(shí)錯(cuò)誤處理捕獲錯(cuò)誤OnErrorGotoLineLabel獲取錯(cuò)誤信息Err對(duì)象可以獲取到錯(cuò)誤信息。Err對(duì)象的Number屬性返回錯(cuò)誤號(hào),Description
屬性返回相關(guān)的報(bào)錯(cuò)信息忽略錯(cuò)誤Resume語(yǔ)句表現(xiàn)為三種形式:Resume執(zhí)行導(dǎo)致錯(cuò)誤的語(yǔ)句ResumeNext返回導(dǎo)致錯(cuò)誤語(yǔ)句的下一條語(yǔ)句并執(zhí)行該語(yǔ)句,從而跳過(guò)了有問(wèn)題的語(yǔ)句;ResumeLineLabel跳轉(zhuǎn)到代碼中指定的行標(biāo)簽處,選擇從何處恢復(fù)執(zhí)行恢復(fù)錯(cuò)誤處理OnErrorGoTo0第二章:Application對(duì)象1全局:Application對(duì)象是全局對(duì)象,它的許多屬性和方法也是全局的成員。2Active屬性:下面的Application屬性是全局的屬性,允許引用活動(dòng)的對(duì)象:ActiveCell、ActiveChart、ActivePrinter、ActiveSheet、ActiveWindow、ActiveWorkbook、Selection。3顯示警告:設(shè)置DisplayAlerts屬性為False,可以屏蔽掉大多數(shù)警告。當(dāng)屏蔽一個(gè)警告對(duì)話框時(shí),自動(dòng)執(zhí)行該對(duì)話框中默認(rèn)的按鈕相關(guān)聯(lián)的操作。
例如:Application.DisplayAlerts=False
ActiveSheet.Delete
Application.DisplayAlerts=True4屏幕刷新:Application.ScreenUpdating=False5Application的Evaluate方法:將一個(gè)MicrosoftExcel名稱轉(zhuǎn)換為一個(gè)對(duì)象或者一個(gè)值。語(yǔ)法表達(dá)式.Evaluate(Name)表達(dá)式
一個(gè)代表Application對(duì)象的變量。參數(shù)名稱必選/可選數(shù)據(jù)類型描述Name必選Variant使用MicrosoftExcel命名約定的對(duì)象名稱。返回值
Variant說(shuō)明該方法可使用下列MicrosoftExcel名稱類型:A1格式引用??梢酝ㄟ^(guò)A1格式表示法引用單個(gè)單元格。所有引用均視為絕對(duì)引用。區(qū)域。在引用中可以使用區(qū)域、交集和聯(lián)合運(yùn)算符(分別為冒號(hào)、空格和逗號(hào))。定義的名稱??捎煤暾Z(yǔ)言指定任何名稱。外部引用??梢允褂?運(yùn)算符引用另一工作簿中的單元格或已定義的名稱,例如,Evaluate("[BOOK1.XLS]Sheet1!A1")。圖表對(duì)象。可以指定任何圖表對(duì)象名稱(如“Legend”、“PlotArea”或“Series1”),以訪問(wèn)該對(duì)象的屬性和方法。例如,返回圖例中所用字體的名稱。6InputBox:
Setrng=Application.InputBox(prompt:="請(qǐng)輸入單元格區(qū)域",Type:=8)7狀態(tài)欄:允許為StatusBar屬性賦一個(gè)文本字符串,并將該字符串顯示在Excel屏幕底部狀態(tài)欄的左側(cè)。SubShowMessage()DimlCounterAsLongForlCounter=0To100000000IflCounterMod1000000=0ThenApplication.StatusBar="ProcessingRecord"&lCounterEndIfNextlCounterApplication.StatusBar=FalseEndSub注意:在過(guò)程的結(jié)尾,必須將StatusBar屬性值設(shè)置為False,返回狀態(tài)欄默認(rèn)操作。否則,最后的消息將會(huì)一直停留在狀態(tài)欄上。8SendKeys:SendKeys允許發(fā)送按鍵到當(dāng)前活動(dòng)窗口,用來(lái)控制不支持任何其他交互形式的應(yīng)用程序,例如DDE(DynamicDataExchange)或OLE。9OnTime:使用OnTime方法安排在將來(lái)某個(gè)時(shí)刻運(yùn)行宏,需要指定該宏運(yùn)行的日期和時(shí)間以及宏的名稱。如果使用Application對(duì)象的Wait方法暫停某宏,所有的Excel行為,包括手工交互操作,都將掛起。使用OnTime的優(yōu)勢(shì)在于,當(dāng)?shù)却\(yùn)行預(yù)設(shè)的宏時(shí),允許返回正常的Excel交互操作,包括運(yùn)行其他的宏。10OnKey:使用OnKey方法將一個(gè)宏過(guò)程賦給單個(gè)按鍵或任意組合鍵。也可以使用該方法禁用組合鍵。SubAssignDown()Application.OnKey"{Down}","DownTen"EndSubSubDownTen()ActiveCell.Offset(10,0).SelectEndSub11工作表函數(shù):在Excel中可以使用兩種內(nèi)置函數(shù),一組函數(shù)是VBA語(yǔ)言的組成部分,另一組函數(shù)是Excel工作表函數(shù)的子集(WorksheetFunction對(duì)象用作可從VisualBasic中調(diào)用的MicrosoftExcel工作表函數(shù)的容器。)。一般情況下,如果一個(gè)VBA函數(shù)與一個(gè)Excel函數(shù)有著相同的用途,那么該Excel函數(shù)就不能直接用于VBA宏(但可以使用Evaluate方法訪問(wèn)任何Excel函數(shù))。12Caller:Application對(duì)象的Caller屬性返回調(diào)用或執(zhí)行宏過(guò)程的對(duì)象的引用,SelectCaseTypeName(Application.Caller)Case"Range"Case"String"Case"Error"v="Error"CaseElsev="unknown"EndSelectMsgBox"caller="&v第三章:工作薄和工作表1Workbooks集合:Workbooks集合由當(dāng)前所有在內(nèi)存里打開(kāi)的Workbook對(duì)象組成。添加Workbook對(duì)象向Workbooks集合中添加對(duì)象的方式有很多種,可以基于Workbook對(duì)象的默認(rèn)屬性創(chuàng)建新的空工作薄,或基于模板文件創(chuàng)建新工作薄,還可以打開(kāi)一個(gè)現(xiàn)有的工作薄文件?;谀J(rèn)的工作薄創(chuàng)建新的空工作薄,使用Workbooks集合的Add方法Add方法允許為新工作薄指定模板用Open方法可以向Workbooks集合中添加現(xiàn)有的工作薄文件。從路徑中獲取文件名當(dāng)在VBA中處理工作薄時(shí),經(jīng)常需要指定目錄路徑和文件名稱。某些任務(wù)只需要知道路徑,例如已設(shè)置了默認(rèn)的目錄。某些任務(wù)只需要知道文件名稱,例如希望激活某個(gè)已打開(kāi)的工作薄。而另一些任務(wù)中,既需要路徑也需要文件名,例如希望打開(kāi)已存在但不在活動(dòng)目錄中的工作薄文件。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是對(duì)包含該代碼的工作薄的引用。無(wú)論該工作薄位于哪兒,ThisWorkbook的Path屬性都將提供必需的路徑以定位相關(guān)的文件。覆蓋現(xiàn)有的工作薄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對(duì)象里,有一個(gè)Sheets集合,其成員是Worksheet對(duì)象或Chart對(duì)象。Worksheet對(duì)象與Chart對(duì)象也分別屬于他們自己的集合——Worksheets集合和Charts集合。Charts集合僅包括圖表工作表。嵌入在工作表中的圖表不是Charts集合的成員,而是包含在ChartObject對(duì)象中,是工作表的ChartObjects集合中的成員。工作表(Worksheet)可通過(guò)在Sheets集合和Worksheets集合里的名稱或索引值引用工作表。如果已知要處理的工作表的名稱,可以通過(guò)名稱在Worksheets集合里指定工作表。注意:Worksheet對(duì)象的Index屬性返回的是Sheets集合中的索引值,不是Worksheets集合中的索引值。(Sheets集合中的索引值和Worksheets集合中的索引值是不同的。因?yàn)?,Sheets集合中也包括Chart對(duì)象即圖表工作表)工作表的復(fù)制和移動(dòng)Worksheet對(duì)象的Copy方法和Move方法允許每次復(fù)制或移動(dòng)一個(gè)或者多個(gè)工作表。他們都提供了兩個(gè)可選參數(shù),允許指定該操作的目的位置,即某指定的工作表之前或之后。如果不使用任何參數(shù),那么將復(fù)制或者移動(dòng)工作表到一個(gè)新工作薄中。注意:Copy方法和Move方法不返回任何值或引用組合工作表在VBA中,可以使用Worksheets集合的Select方法并聯(lián)合Array函數(shù)來(lái)組合工作表。此外,也可以使用Worksheet對(duì)象的Select方法創(chuàng)建工作表組。按正常的方式選擇第1個(gè)工作表,通過(guò)使用Select方法并將其Replace參數(shù)設(shè)置為False將其他工作表添加到組中。3Windows對(duì)象:Window對(duì)象代表窗口。說(shuō)明許多工作表特征(如滾動(dòng)條和標(biāo)尺)實(shí)際上是窗口的屬性。Window對(duì)象是Windows集合的成員。Application對(duì)象的Windows集合包含應(yīng)用程序中的所有窗口,而Workbook對(duì)象的Windows集合只包含指定工作簿中的窗口。示例使用Windows(index)(其中index是窗口名稱或索引號(hào))可返回一個(gè)Window對(duì)象。下例最大化活動(dòng)窗口。VisualBasicforApplicationsWindows(1).WindowState=xlMaximized注意,活動(dòng)窗口總是Windows(1)。第四章:使用單元格區(qū)域Range對(duì)象可以是單個(gè)單元格、一個(gè)矩形的單元格區(qū)域或者許多矩形單元格區(qū)域(不相鄰的區(qū)域)的聯(lián)合。Range對(duì)象包含在Worksheet對(duì)象里。Excel對(duì)象模型不支持跨多個(gè)工作表的三維Range對(duì)象,在單個(gè)Range對(duì)象里每個(gè)單元格必須位于同一個(gè)工作表中。1Range對(duì)象的Activate方法和Select方法:使用Activate方法激活一個(gè)單元格(盡管使用Activate方法時(shí)允許指定多個(gè)單元格,但只能激活一個(gè)單元格),使用Select方法選擇單元格區(qū)域。2Range屬性:返回一個(gè)Range對(duì)象,它代表一個(gè)單元格或單元格區(qū)域。語(yǔ)法表達(dá)式.Range(Cell1,Cell2)表達(dá)式
一個(gè)代表Application對(duì)象的變量、一個(gè)代表Worksheet對(duì)象的變量或一個(gè)代表Range對(duì)象的變量。參數(shù)名稱必選/可選數(shù)據(jù)類型描述Cell1必選Variant區(qū)域名稱。必須為采用宏語(yǔ)言的A1樣式引用??砂▍^(qū)域操作符(冒號(hào))、相交區(qū)域操作符(空格)或合并區(qū)域操作符(逗號(hào))。也可包括貨幣符號(hào),但它們會(huì)被忽略掉。您可以在區(qū)域中任一部分使用局部定義名稱。如果使用名稱,則假定該名稱使用的是宏語(yǔ)言。Cell2可選Variant區(qū)域左上角和右下角的單元格。可以是一個(gè)包含單個(gè)單元格、整列或整行的Range對(duì)象,或者也可以是一個(gè)用宏語(yǔ)言為單個(gè)單元格命名的字符串。說(shuō)明如果在沒(méi)有對(duì)象識(shí)別符時(shí)使用,則該屬性是的快捷方式(它返回活動(dòng)表的一個(gè)區(qū)域,如果活動(dòng)表不是一張工作表,則該屬性無(wú)效)。當(dāng)應(yīng)用于Range對(duì)象時(shí),該屬性與Range對(duì)象相關(guān)。例如,如果選中單元格C3,那么Selection.Range("B1")返回單元格D3,因?yàn)樗琒election屬性返回的Range對(duì)象相關(guān)。此外,代碼ActiveSheet.Range("B1")總是返回單元格B1?;顒?dòng)工作表中的單元格區(qū)域可以使用Application對(duì)象的Range屬性引用活動(dòng)工作表中的Range對(duì)象。因?yàn)锳pplication對(duì)象的Range屬性是全局的成員,所以可以省略Application對(duì)象的引用。
Application.Range(“B2”)
Range(“B2”)非活動(dòng)工作表中的單元格區(qū)域如果希望引用非活動(dòng)工作表上的單元格區(qū)域,可簡(jiǎn)單地使用所需Worksheet對(duì)象的Range屬性。Worksheets(“Sheet2”).Range(“C10”)
如果包含該工作表和單元格區(qū)域的工作薄處于非活動(dòng)狀態(tài),則需要進(jìn)一步指定對(duì)Range對(duì)象的引用:
Workbooks(“”).Worksheets(“Sheet1”).Range(“C10”)注意:當(dāng)把Range屬性作為另一個(gè)Range屬性的參數(shù)時(shí),還需要使用完整的限定屬性:Subtest2()Sheets("Sheet1").Range(_Sheets("Sheet1").Range("A1"),_Sheets("Sheet1").Range("A10")_).Interior.ColorIndex=3EndSubRange對(duì)象的Range屬性Range(“C3”).Range(“B1”)‘該代碼引用單元格D3Cells屬性使用Application對(duì)象、Worksheet對(duì)象或Range對(duì)象的Cells屬性,將引用一個(gè)包含Worksheet對(duì)象或Range對(duì)象里所有單元格的Range對(duì)象。Range對(duì)象的Item屬性Range.Item屬性返回一個(gè)Range對(duì)象,它代表對(duì)指定區(qū)域某一偏移量處的區(qū)域。語(yǔ)法表達(dá)式.Item(RowIndex,ColumnIndex)表達(dá)式
一個(gè)代表Range對(duì)象的變量。參數(shù)名稱必選/可選數(shù)據(jù)類型描述RowIndex必選Variant要訪問(wèn)的單元格的索引號(hào),順序?yàn)閺淖蟮接?,然后往下。Range.Item(1)返回區(qū)域左上角單元格;Range.Item(2)返回緊靠左上角單元格右側(cè)的單元格。ColumnIndex可選Variant指明要訪問(wèn)的單元格所在列的列號(hào)的數(shù)字或字符串,1或“A”表示區(qū)域中的第一列。說(shuō)明語(yǔ)法1使用行號(hào)和列號(hào)或列標(biāo)作為索引參數(shù)。關(guān)于此語(yǔ)法的詳細(xì)信息,請(qǐng)參閱Range對(duì)象。RowIndex和ColumnIndex參數(shù)為相對(duì)偏移量。換句話說(shuō),如果RowIndex指定為1,則返回區(qū)域內(nèi)第一行中的單元格,而非工作表的第一行。例如,如果選定區(qū)域?yàn)閱卧馛3,則Selection.Cells(2,2)返回單元格D4(使用Item屬性可在原始區(qū)域之外進(jìn)行索引)。注意:因?yàn)镮tem屬性是Range對(duì)象的默認(rèn)屬性,所以下面的代碼是等效的:Cells.Item(2,2)Cells.Item(2,”B”)Cells(2,2)Cells(2,”B”)在Range中使用CellsRange(Cells(1,1),Cells(10,5))‘該代碼引用活動(dòng)工作表的A1:E10WithSheets(“Sheet1”).Range(.Cells(1,1),.Cells(10,5)).Font.Bold=TrueEndWith‘注意確保完整的限定Cells屬性關(guān)于Range對(duì)象的Cells屬性Range對(duì)象的Cells屬性提供了一種比較好的方法,根據(jù)某單元格相對(duì)于起始單元格的位置或在某單元格塊中的相對(duì)行列位置來(lái)實(shí)現(xiàn)引用。Range(“D10:G20”).Cells(2,3)‘該代碼引用單元格F11事實(shí)上,不需要限制所引用的單元格在Range對(duì)象的范圍內(nèi),也可以引用原單元格區(qū)域之外的單元格,這就意味著實(shí)際上只需要使用該Range對(duì)象左上角的單元格作為起始點(diǎn)。
Range(“D10”).Cells(2,3)‘該代碼引用單元格F11注意:Range(“D10”).Cells(2,3)Range(“D10”).Item(2,3)Range(“D10”)(2,3)等價(jià)單個(gè)參數(shù)的單元格區(qū)域引用引用單元格的簡(jiǎn)寫(xiě)方法既可接受兩個(gè)參數(shù)(如:Range(“D10”).Item(2,3)),也可以接受單個(gè)參數(shù)。在多于一行的單元格區(qū)域里,如果索引值超過(guò)了單元格區(qū)域的總列數(shù),引用將在單元格區(qū)域指定的列內(nèi),自動(dòng)向下?lián)Q行到合適的位置。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對(duì)象的Offset屬性返回與Cells屬性相似的對(duì)象,但其中有兩點(diǎn)不同。
第一點(diǎn)不同是Offset參數(shù)基于0而不是基于1,正如Offset的詞義(偏移量)所暗示的。
Range(“A10”).Cells(1,1)Range(“A10”).Offset(0,0)‘這兩條代碼都引用A10單元格第二點(diǎn)不同是Cells產(chǎn)生的Range對(duì)象只是一個(gè)單元格,而Offset屬性引用的Range對(duì)象是一個(gè)單元格區(qū)域,與原單元格區(qū)域的行數(shù)和列數(shù)相同。
Range(“A1:B2”).Offset(1,1)‘該代碼引用B2:C34Resize屬性:用Range對(duì)象的Resize屬性,可引用一個(gè)單元格區(qū)域,它的左上角單元格與原區(qū)域相同,但行數(shù)與列數(shù)不同。下面的代碼引用D10:E10
Range(“D10:F20”).Resize(1,2)5SpecialCells方法:確定最后一個(gè)單元格SetrngLast=Range(“A1”).SpecialCells(xlCellTypeLastCell)刪除數(shù)字OnErrorResumeNextForEachrngInCells.SpecialCells(xlCellTypeConstants,xlNumbers)Nextrng6CurrentRegion屬性7End屬性:End屬性模擬<Ctrl+箭頭鍵>的操作。下面的代碼引用列A中“A1”單元格下面連續(xù)數(shù)據(jù)單元格中的最后一個(gè)數(shù)據(jù)單元格,或者列A中“A1”單元格下面連續(xù)非數(shù)據(jù)單元格中的最后一個(gè)非數(shù)據(jù)單元格的下一位置。(依據(jù)第一句話直接在Excel模擬End屬性的功能)Range.End屬性返回一個(gè)Range對(duì)象,該對(duì)象代表包含源區(qū)域的區(qū)域尾端的單元格。等同于按鍵End+向上鍵、End+向下鍵、End+向左鍵或End+向右鍵。Range對(duì)象,只讀。語(yǔ)法表達(dá)式.End(Direction)表達(dá)式
一個(gè)代表Range對(duì)象的變量。參數(shù)名稱必選/可選數(shù)據(jù)類型描述Direction必選XlDirection所要移至的方向。8單元格區(qū)域求和:9Columns屬性和Rows屬性:Columns和Rows是Application、Worksheet和Range對(duì)象的屬性,返回對(duì)工作表或者單元格區(qū)域中所有列或行的引用。在每種情形中,返回的引用都是一個(gè)Range對(duì)象。10Count屬性Range.Count屬性返回一個(gè)Long值,它代表集合中對(duì)象的數(shù)量。語(yǔ)法表達(dá)式.Count表達(dá)式
一個(gè)代表Range對(duì)象的變量。示例
此示例顯示Sheet1上選定區(qū)域中的列數(shù)。此示例還將檢測(cè)選定區(qū)域中是否包含多重選定區(qū)域,如果包含,則對(duì)多重選定區(qū)域中每一子區(qū)域進(jìn)行循環(huán)。VisualBasicforApplicationsSubDisplayColumnCount()DimiAreaCountAsIntegerDimiAsIntegerWorksheets("Sheet1").ActivateIfiAreaCount<=1ThenMsgBox"Theselectioncontains"&Selection.Columns.Count&"columns."ElseFori=1ToiAreaCountMsgBox"Area"&i&"oftheselectioncontains"&_Selection.Areas(i).Columns.Count&"columns."NextiEndIfEndSub11Areas屬性Range.Areas屬性返回一個(gè)Areas集合,該集合表示多重區(qū)域選擇中的所有區(qū)域。只讀。語(yǔ)法表達(dá)式.Areas表達(dá)式
一個(gè)代表Range對(duì)象的變量。說(shuō)明對(duì)于單一選擇區(qū)域,Areas屬性返回只包含一個(gè)對(duì)象的集合,即原始Range對(duì)象本身。對(duì)于多重選擇區(qū)域,Areas屬性返回一個(gè)集合,該集合包含與每個(gè)選定區(qū)域相對(duì)應(yīng)的對(duì)象。示例本示例在用戶選定多個(gè)區(qū)域并試圖執(zhí)行某一命令時(shí)顯示提示信息。該示例必須在工作表上運(yùn)行。12Areas集合Areas集合由選定區(qū)域內(nèi)的多個(gè)子區(qū)域或連續(xù)單元格塊組成的集合。說(shuō)明沒(méi)有單獨(dú)的Area對(duì)象;Areas集合內(nèi)的各個(gè)成員是Range對(duì)象。在Areas集合中,選定區(qū)域內(nèi)每個(gè)離散的連續(xù)單元格區(qū)域都有一個(gè)Range對(duì)象。如果選定區(qū)域內(nèi)只有一個(gè)子區(qū)域,則Areas集合包含一個(gè)與該選定區(qū)域?qū)?yīng)的Range對(duì)象。13Union方法和Intersect方法:Union和Intersect是Application對(duì)象的方法,但是因?yàn)樗麄兪?lt;全局>的成員,所以不需要在前面引用Application。當(dāng)希望從兩個(gè)或多個(gè)單元格塊中生成一個(gè)單元格區(qū)域,可使用Union方法。當(dāng)希望查找兩個(gè)或多個(gè)單元格區(qū)域中共同的單元格,即這些單元格區(qū)域的重疊部分,則使用Intersect方法。14空單元格:使用VBA的IsEmpty函數(shù)檢測(cè)空單元格。第五章:使用名稱1Name對(duì)象Name對(duì)象代表單元格區(qū)域的定義名。名稱可以是內(nèi)置名稱(如“Database”、“Print_Area”和“Auto_Open”)或自定義名稱。說(shuō)明應(yīng)用程序、工作簿和Worksheet對(duì)象Name對(duì)象是Application、Workbook和Worksheet對(duì)象的Names集合的成員。使用Names(index)(其中index是名稱索引號(hào)或定義名稱)可返回一個(gè)Name對(duì)象。索引號(hào)表明名稱在集合中的位置。名稱按字母順序從a到z放置,不區(qū)分大小寫(xiě)。Range對(duì)象雖然Range對(duì)象可以有多個(gè)名稱,但Range對(duì)象沒(méi)有Names集合。將Name與一個(gè)Range對(duì)象一起使用可從名稱列表(按字母順序排序)中返回第一個(gè)名稱。2Names屬性Application.Names屬性Application.Names屬性返回一個(gè)代表活動(dòng)工作簿(workbook)中所有名稱的Names集合。Names對(duì)象,只讀。語(yǔ)法表達(dá)式.Names表達(dá)式
一個(gè)代表Application對(duì)象的變量。說(shuō)明在不使用對(duì)象識(shí)別符的情況下使用此屬性等效于使用。Workbook.Names屬性返回一個(gè)Names集合,它代表指定工作簿的所有名稱(包括所有指定工作表的名稱)。Names對(duì)象,只讀。語(yǔ)法表達(dá)式.Names表達(dá)式
一個(gè)代表Workbook對(duì)象的變量。說(shuō)明在不使用對(duì)象識(shí)別符的情況下使用此屬性等效于使用。示例本示例是將Sheet1中的A1單元格的名稱定義為“myName”。VisualBasicforApplicationsActiveWorkbook.Names.AddName:="myName",RefersToR1C1:=_"=Sheet1!R1C1"WWorksheet.Names屬性返回一個(gè)Names集合,它代表所有特定于工作表的名稱(使用“WorksheetName!”前綴定義的名稱)。Names對(duì)象,只讀。語(yǔ)法表達(dá)式.Names表達(dá)式
一個(gè)代表Worksheet對(duì)象的變量。說(shuō)明在不使用對(duì)象識(shí)別符的情況下使用此屬性等效于使用。3Name對(duì)象的Name屬性:Name.Name屬性返回或設(shè)置一個(gè)String值,它代表對(duì)象的名稱。語(yǔ)法表達(dá)式.Name表達(dá)式
一個(gè)代表Name對(duì)象的變量。說(shuō)明改變Name對(duì)象的Name屬性:Names(“Data”).Name=“NewData”4命名單元格區(qū)域創(chuàng)建全局名稱可以使用Workbook對(duì)象的Names集合的Add方法創(chuàng)建引用單元格區(qū)域的全局名稱:Names.AddName:=”Data”,RefersTo:=”=Sheet1!$D$10:$D$12”注意:在定義的范圍之前包含等號(hào)并且使用美元符號(hào)($)采取單元格的絕對(duì)引用。否則,該名稱將引用定義該名稱時(shí)相對(duì)于活動(dòng)單元格的相對(duì)地址。Names.AddName:=”Data”,RefersTo:=”=$D$10:$D$12”使用Range對(duì)象的Name屬性創(chuàng)建全局名稱Range(“A1:D10”).Name=“SalesData”創(chuàng)建局部名稱:A.使用sheet對(duì)象的Names集合的Add方法創(chuàng)建引用單元格區(qū)域的局部名稱: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對(duì)象的Name屬性創(chuàng)建全局名稱Range(“A1:D10”).Name=“Sheet1!SalesData”5在名稱中存儲(chǔ)值DimvAsVariantNames.AddName:=”StoreNumber”,RefersTo:=v‘在名稱中存儲(chǔ)數(shù)字V=“Sales”Names.AddName:=”StoreString”,RefersTo:=v‘在名稱中存儲(chǔ)字符串Names.AddName:=”ItemsInA”,RefersTo:=”=COUNTA($A:$A)”‘在名稱中存儲(chǔ)公式獲取名稱中的值:v=[StoreNumber]6存儲(chǔ)數(shù)組SubArrayToName()DimaiArray(1To200,1To3)AsIntegerDimiRowAsInteger,iColumnAsIntegerForiRow=1To200ForiColumn=1To3aiArray(iRow,iColumn)=iRow*iColumnNextiColumnNextiRowNames.Addname:="TestName",RefersTo:=aiArrayEndSubSubNameToArray()DimvArrayAsVariantvArray=[TestName]MsgBoxvArray(200,3)EndSub注意:通過(guò)賦值包含數(shù)組的名稱給變量而創(chuàng)建的數(shù)組下標(biāo)總是基于1,即使在模塊的聲明區(qū)有OptionBase0語(yǔ)句。7隱藏名字:設(shè)置其Visible屬性為False,將隱藏該名稱。Names.AddName:=”StoreNumber”,RefersTo:=v,Visible:=FalseNames(“StoreNumber”).Visible=False8處理命名的單元格區(qū)域:Range(”Input”)‘Input為單元格區(qū)域名稱9搜索名稱:判斷工作薄中是否存在某個(gè)名稱;判斷選中的單元格是否被某個(gè)名稱引用;判斷選中的單元格區(qū)域是否被某個(gè)名稱引用;判斷選中的單元格區(qū)域中有哪些單元格或單元格區(qū)域被某些名稱引用第六章:數(shù)據(jù)列表1結(jié)構(gòu)化數(shù)據(jù):在應(yīng)用Excel的列表管理工具之前,必須以非常明確的方式配置數(shù)據(jù)。必須像數(shù)據(jù)庫(kù)表一樣結(jié)構(gòu)化數(shù)據(jù),每一列的頂部帶有標(biāo)題作為字段名稱,并且數(shù)據(jù)本身必須由單行信息組成,與數(shù)據(jù)庫(kù)記錄等同。包含字段名稱的頂部行稱為標(biāo)題記錄。2排序單元格區(qū)域3創(chuàng)建表ActiveSheet.ListObjects.Add(xlSrcRange,Range(“$B$3:$D$9”),,xlYes).Name=_“Table1”4排序表5自動(dòng)篩選第七章:數(shù)據(jù)透視表第八章:圖表第九章:事件過(guò)程本章主要介紹工作表事件、圖表工作表事件、工作薄事件以及相關(guān)問(wèn)題。注意:事件過(guò)程總是與特定的對(duì)象相關(guān)并包含在與該對(duì)象相關(guān)的類模塊中,例如ThisWorkbook模塊、工作表模塊或用戶窗體模塊。不要試圖在標(biāo)準(zhǔn)模塊中放置事件過(guò)程。1工作表事件PrivateSubWorksheet_Activate()PrivateSubWorksheet_Be
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 18《富饒的西沙群島》第一課時(shí) 教學(xué)實(shí)錄-2024-2025學(xué)年語(yǔ)文三年級(jí)上冊(cè)統(tǒng)編版
- 2024年度“智能城市規(guī)劃與咨詢合同及”2篇
- 2024版企業(yè)財(cái)務(wù)風(fēng)險(xiǎn)管理培訓(xùn)與咨詢服務(wù)協(xié)議2篇
- 2024企業(yè)智能客服系統(tǒng)外包服務(wù)合同范本3篇
- 《綜合與實(shí)踐 我的幼兒園》(教學(xué)實(shí)錄)-2024-2025學(xué)年數(shù)學(xué)西師大版一年級(jí)上冊(cè)
- 2024版住宅房產(chǎn)抵押擔(dān)保簡(jiǎn)易合同模板3篇
- 2024年度鐘毓餐飲公司與食材供應(yīng)商關(guān)于食材采購(gòu)的合同3篇
- 2024至2030年中國(guó)尼龍半包覆綜行業(yè)投資前景及策略咨詢研究報(bào)告
- 2024至2030年中國(guó)全棉單珠地網(wǎng)眼布行業(yè)投資前景及策略咨詢研究報(bào)告
- 2021重陽(yáng)節(jié)獻(xiàn)給老年人的祝福
- 機(jī)場(chǎng)行李自動(dòng)處理系統(tǒng)建模與仿真研究的開(kāi)題報(bào)告
- 產(chǎn)品合格證出廠合格證A4打印模板
- 護(hù)理中斷事件(演示文稿)
- 地基與基礎(chǔ)工程試題及參考答案
- 新能源汽車專業(yè)畢業(yè)論文
- 部編版六年級(jí)上冊(cè)語(yǔ)文期末古詩(shī)文專項(xiàng)訓(xùn)練(含答案)
- GB/T 29465-2023浮頭式熱交換器用法蘭
- 鋼渣的綜合利用
- 少年宮乒乓球興趣小組簡(jiǎn)介
- 西醫(yī)癥狀鑒別診斷全部
- 靜脈輸液流程圖
評(píng)論
0/150
提交評(píng)論