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="ÏÂÏÞ="&LBound(aiData)&vbCrsMessage=sMessage&"ÉÏÏÞ="&UBound(aiData)&vbCrsMessage=sMessage&"ÔªËØÊý="&WorksheetFunction.Count(aiData)&vbCrsMessage=sMessage&"ÔªËغÍ="&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

提交评论