VBA中名称的使用

上传人:pu****.1 文档编号:489221539 上传时间:2024-01-20 格式:DOCX 页数:5 大小:17.82KB
返回 下载 相关 举报
VBA中名称的使用_第1页
第1页 / 共5页
VBA中名称的使用_第2页
第2页 / 共5页
VBA中名称的使用_第3页
第3页 / 共5页
VBA中名称的使用_第4页
第4页 / 共5页
VBA中名称的使用_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《VBA中名称的使用》由会员分享,可在线阅读,更多相关《VBA中名称的使用(5页珍藏版)》请在金锄头文库上搜索。

1、Excel】VBA中名称的使用理解工作表中的名称在Excel工作表中,一般可以通过两种方式来定义名称。第一种方式是直接在“名称框”(如图1所示)中输入名字来命名所选定的单元格或单元格区域,通常,在名称框中显示的是所在单元格的行号列标,单击其右侧的下拉箭头,可以看到工作簿中的名称列表。第二种方式是使用“定义名称”对话框来指定名称(选取菜单“插入名称定义”命令后,调出“定义名称”对话框,如图2所示),在该对话框中,可以定义名称常量和动态名称,而这些名称则不会出现在“名称框”中。名称又分为全局名称和局部名称。全局名称可以在当前工作簿中的任一工作表中使用,而局部名称只能在指定的工作表中使用。如图2中所

2、示,namel为全局名称,name2为局部名称,即局部名称所在的工作表在该名称的右侧。此外,正如前所述,还可以在“定义名称”框中定义名称常量,如图2中的X。还可以动态命名,如图2中的NameList。它们在引用位置中进行输入。通过在工作表中定义名称,可以更好的管理工作表数据,方便地编写公式和设置表格。正如在工作表中定义和使用名称一样,在VBA中也可以创建和使用名称,并能利用名称处理工作表中的数据。在VBA中对名称的基本操作(l) 创建名称 可以使用下面的代码在当前工作簿中创建名称:ActiveWorkbook.Names.AddName:=MyName,RefersToRlCl:=Sheetl

3、!R2C2:R6C4或者ActiveWorkbook.Names.AddName:=MyName,RefersTo:=Sheetl!$B$2:$D$6上面的代码在当前工作簿中将工作表Sheetl内的区域B2:D6命名为MyName,该名称为全局名称。在所命名的名称中不能出现空格和单元格引用,并且,如果对命名区域使用A1样式的引用,则最后使用绝对引用,否则所命名的区域将会不确定。在所命名的名称前加上工作表名,则创建局部名称,如:ActiveWorkbook.Names.AddName:=Sheet1!MyName1,RefersTo:=Sheet1!$B$2:$D$6上面的代码在工作表Sheet

4、l中命名区域B2:D6为MyNamel,该名称为局部名称。也通过引用指定工作表来创建局部名称,如:Worksheets(sheet2).Names.AddName:=MyName2,RefersTo:=Sheet2!$A$l:$B$3上面的代码在工作表Sheet2中创建一个局部名称MyName2,代表Sheet2中的单元格区域A1:B3。 一种简单的命名方法。例如:Worksheets(Sheetl).Range(B8:Cl0).Name=MyName3上面的代码将工作表Sheet1中的单元格区域B8:C10命名为MyName3,为全局名称。Worksheets(Sheet2).Range(H

5、l5:Gl6).Name=Sheet2!MyName4上面的代码将工作表Sheet2中的单元格区域H15:G16命名为MyName4,为局部名称。注意,这种方法只能应用于命名单元格区域,不能够用来命名公式、数字等。 在当前工作表中命名局部区域,该区域为其它工作表中的单元格区域。Worksheets(Sheet1).Range(E6:F8).Name=Sheet2!MyName5或者:Worksheets(sheet2).Names.AddName:=MyName5,RefersTo:=Sheet1!$E$6:$F$8上面的代码在工作表Sheet2中命名工作表Sheet1中单元格区域E6:F8为

6、MyName5,该名称为Sheet2中的局部名称。 命名数字Names.AddName:=NameNumber,RefersTo:=666将数字666命名为NameNumber。 命名字符串Names.AddName:=NameString,RefersTo:=TV,将字符串TV命名为NameString。 命名数组DimMyArray(10)DimiAsIntegerFori=1To10MyArray(i)=iNextiNames.AddName:=NameArray,RefersTo:=MyArray上述代码先对数组赋值,然后指定名称。命名公式Names.AddName:=NameForm

7、las,RefersTo:=OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),1)上面的代码命名了一个公式,可以用来创建动态表格或引用动态的区域。使用上面的方法来命名数字、字符串、数组或公式存储经常要使用的值,比将该值存放在单元格中更有优势,它可以避免该值被易外修改并减少了对象的引用。(2) 重命名已有的名称Worksheets(Sheet2).Names(MyName5).Name=MyName6上面的代码将工作表Sheet2中的局部名称MyName5改名为MyName6。但这种方法只能在单元格或单元格区域中进行重命名使用,而不能重命名代表公式、数组和字

8、符串的名称。(3) 改变所选区域所命名的名称的引用区域Worksheets(“Sheet1”).Names.AddSelection.Name.Name,Sheet1.Range(“B3:C4”)上面的代码将原来所选区域的名称的引用区域改为单元格区域B3:C4,即该名称所代表的区域已变为B3:C4,原来命名区域名称被取消。提取命名区域。使用Evaluate方法,例如:代码Evaluate(MyName).Interior.ColorIndex=3将工作表中名称MyName所代表的单元格区域的背景设置为红色。(5)隐藏名称Names.AddName:=HideName,RefersTo:=$A$

9、l:$C$3,Visible:=False将隐藏所创建的名称。注意,如果再创建的名称与所隐藏的名称相同,则被隐藏的名称将被覆盖。(6)删除名称Names(MyName3).Delete上面的代码删除当前工作簿中的名称MyName3。注意,当前工作簿中重命名已有名称和删除名称时,要注意所要操作的名称是全局名称还是局部名称。如果为局部名称,则必须在代码中加上该名称所在工作表的引用。命名名称注意事项(l)名称的最大长度为255个字符。(2)名称可以字母、空格或下划线开头。(3)名称中不能包含空格、连字线等字符。避免在名称中使用与单元格引用相同的字符,如Al、G11等。(5)避免在名称中使用Excel

10、的保留字,如:Criteria、Database、Extract、Print_Area、Print_Titles等。一些示例示例1检查当前工作簿中某名称是否存在Subtest()DimstrAsBooleanstr=NameExists(myName)Ifstr=TrueThenMsgBox该名称存在于当前工作簿中.ElseMsgBox该名称不存在.EndIfEndSubFunctionNameExists(FindNameAsString)AsBooleanDimrngAsRangeDimmyNameAsStringOnErrorResumeNextmyName=ActiveWorkbook

11、.Names(FindName).NameIfErr.Number=0ThenNameExists=TrueEndFunction或者:FunctionNameExists(TheNameAsString)AsBooleanOnErrorResumeNextNameExists=Len(ThisWorkbook.Names(TheName).Name)0EndFunction示例2工作簿中的所有名称可见SubUnHideName()DimNmAsNameForEachNmInNamesNm.Visible=TrueNextEndSub示例3列出当前工作簿中所有名称的相关信息SubShowNam

12、es()DimNAsIntegerForN=1ToActiveWorkbook.Names.CountOnErrorResumeNextCells(N,1)=&ActiveWorkbook.Names(N).NameCells(N,2)=&ActiveWorkbook.Names(N).RefersToRange.AddressCells(N,3)=&ActiveWorkbook.Names(N).ShortcutKeyCells(N,4)=&ActiveWorkbook.Names(N).VisibleNextEndSub示例4显示当前单元格所命名的名称SubShowNames_active

13、cell()OnErrorResumeNextMsgBoxActiveCell.Name.NameSelectCaseErr.NumberCase0Case1004MsgBox单元格&ActiveCell.Address(4)&“没有命名。”CaseElseMsgBoxErr.Number&-&Err.DescriptionEndSelectEndSub示例说明:如果要获取指定单元格所定义的名称,可以使用Name属性两次。际例5删除当前工作簿中含有“name”字符的名称SubDeleteName()DimNmAsNameForEachNmInActiveWorkbook.NamesIfNm.N

14、ameLike*name*ThenNm.DeleteEndIfNextNmEndSub示例6判断某单元格或单元格区域是否与命名区域部分重叠(ByChipPearson)FunctionNameOfParentRange(RngAsRange)AsStringDimNmAsNameForEachNmInThisWorkbook.NamesIfRng.Parent.Name=Nm.RefersToRange.Parent.NameThenIfNotApplication.Intersect(Rng,Nm.RefersToRange)IsNothingThenNameOfParentRange=Nm

15、.NameExitFunctionEndIfEndIfNextNmNameOfParentRange=EndFunction示例说明:如果Rng所代表的单元格或单元格区域与命名区域相交叉,则返回命名区域的名称,否则返回空。名称的高级操作(下面的内容整理自ChipPearson的文章)增大名称框的尺寸在Excel工作表的名称框中(如图1所示),大约只能显示16个字符,当超过它所能容纳的字符时,后面的字符将会被截取,将不能看到完整的名称,这对前面的字符相同而区别在最后几个字符的名称来说,很不方便,但是在Excel中没有改变名称框尺寸的设置。这可通过调用WindowsAPI来解决,通过调用API来增加下拉框的宽度。在VBE编辑器中插入一个标准模块,并输入以下的代码:PublicDeclareFunctionFindWindowLibuser32AliasFindWindowA_(ByVallpClassNameAsString,ByVall

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号