工作簿和工作表模块有一个名为CodeName的属性,这是VBA内部了解对象的方式。默认情况下,工作簿代码名为ThisWorkbook,对于工作表,每个工作表模块都是Sheet1、Sheet2等,对于图表,则是Chart1、Chart2等。在VBA代码中可以像利用普通变量一样利用这些名称。例如:
Sub MYNZA()
MsgBox ThisWorkbook.Name
MsgBox Sheet1.Name
End Sub
代码运行结果:
在上面的讲解中我们了解到:工作簿的模块称为ThisWorkbook,每个工作表模块的名称与其所属工作表的名称类似。那么是否可以更改这个名称呢?
可以更改ThisWorkbook或Sheet对象的代码名。若要更改模块的代码名,可在“项目资源管理器”窗口中选择该模块,然后打开“属性”窗口(F4或从“视图”菜单中),更改“名称”属性。这里须要留意一点如果在这些模块中已经有了代码之后再执行此操作,大概会遇到题目。下面结合两个例子来说明:
a 更改ThisWorkbook对象的代码名,这时ThisWorkbook将继续引用工作簿对象。例如,如果将ThisWorkbook对象的代码名更改为MyWorkbook,则以下两行代码都将工作:
Sub MYNZB()
'更改名称ThisWorkbook为MyWorkbook
MsgBox ThisWorkbook.Name
MsgBox MyWorkbook.Name
End Sub
代码截图:
c 此外,还可以利用VBA过程更改对象的代码名。例如:要将代码名为Sheet1的工作表的代码名更改为NewCodeName,请利用
ThisWorkbook.VBProject.VBComponents("Sheet1").Name= "NewCodeName"
要将MyWorkbook代码名改为NewWBName可以利用下面代码:
ThisWorkbook.VBProject.VBComponents("MyWorkbook").Name = "NewWBName"
全部代码如下:
Sub mynzd()
ThisWorkbook.VBProject.VBComponents("Sheet1").Name = "NewCodeName"
ThisWorkbook.VBProject.VBComponents("NewCodeName").Name = "Sheet1"
End Sub
代码截图: