Worksheet.CodeName为空

我想通过它的CodeName属性来引用新添加的Worksheet。 问题是CodeName返回空string,除非从debugging器运行。

Set tableSheet = Worksheets.Add(After:=Worksheets(Worksheets.Count)) MsgBox tableSheet.CodeName 

即使这个简单的例子不工作,除非我在MsgBox行上放置一个断点。 这有什么问题?

我能够复制你的问题。 一些谷歌search显示这个答案:

 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。

我可以证实这种行为。 我以前从来没有使用CodeName ,有时候我使用Name来引用一个表单。

 Sub Test() Dim tableSheet As New Worksheet Set tableSheet = Worksheets.Add(After:=Worksheets(Worksheets.Count)) MsgBox tableSheet.Name End Sub 

这给出了MsgBox中的工作表的名称,它不仅可读,您可以根据需要更改工作表的名称。