如何解决Worksheet.CodeName为空
| 我正在尝试通过其CodeName属性引用新添加的工作表。问题是,除非从调试器运行,否则CodeName返回空字符串。Set tableSheet = Worksheets.Add(After:=Worksheets(Worksheets.Count))
MsgBox tableSheet.CodeName
除非我在MsgBox行上设置断点,否则即使这个简单的示例也无法正常工作。
这是什么问题?
解决方法
我能够复制您的问题。一些谷歌搜索显示了这个答案:
Sub test()
Dim tablesheet As Excel.Worksheet
Set tablesheet = Worksheets.Add(After:=Worksheets(Worksheets.Count))
MsgBox ThisWorkbook.VBProject.VBComponents(tablesheet.Name).Properties(\"Codename\")
End Sub
我认为您必须在“工具”>“参考”中检查Microsoft Visual Basic for Applications Extensibility 5.3。
,我可以确认这种行为。我以前从未使用过“ 2”,有时也使用“ 3”来引用图纸。
Sub Test()
Dim tableSheet As New Worksheet
Set tableSheet = Worksheets.Add(After:=Worksheets(Worksheets.Count))
MsgBox tableSheet.Name
End Sub
这会在ѭ5中给出工作表的名称,不仅可读,而且您可以根据需要更改工作表的名称。
,对于由宏创建的新工作表,我也有类似的问题(除非打开宏编辑器,否则工作表的代号将为空)。
就我而言,由于我需要代码名称才能在新工作表中插入一些宏。因此,我使用以下代码,它可以正常工作。由于我的\'VBComponents.item \'的代码访问名称属性,即工作表的codeName属性,似乎codeName会有价值。
注意:我不确定为什么,下面的代码会自动打开VBA编辑器。
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Set VBProj = ActiveWorkbook.VBProject
Dim i
For i = 1 To VBProj.VBComponents.Count
If VBProj.VBComponents.Item(i).Name = ActiveSheet.CodeName Then
Set VBComp = VBProj.VBComponents.Item(i)
End If
Next
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。