我正在尝试通过新添加的工作表的CodeName属性来引用它。问题是,除非从调试器运行,否则CodeName将返回空字符串。
Set tableSheet = Worksheets.Add(After:=Worksheets(Worksheets.Count))
MsgBox tableSheet.CodeName即使是这个简单的例子也不能工作,除非我在MsgBox行上设置一个断点。这有什么问题呢?
发布于 2011-05-25 13:08:20
我可以复制你的问题。一些谷歌搜索显示了这个答案:
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我认为你必须在Tools>References中检查Microsoft Visual Basic for Applications Extensibility 5.3。
发布于 2011-05-23 19:28:42
我可以确认这种行为。我以前从未使用过CodeName,有时我会使用Name来引用工作表。
Sub Test()
Dim tableSheet As New Worksheet
Set tableSheet = Worksheets.Add(After:=Worksheets(Worksheets.Count))
MsgBox tableSheet.Name
End Sub这给出了MsgBox中工作表的名称,它不仅是可读的,如果需要,您还可以更改工作表的名称。
发布于 2021-06-09 20:25:51
我还需要为新的工作表读取代号。这个解决方案对我很有效:
On Error Resume Next
Debug.Print ActiveWorkbook.VBProject.VBComponents(Worksheets(ActiveSheet.Name).CodeName).Properties("Codename")
On Error GoTo 0strActiveSheetCodeName = ActiveWorkbook.VBProject.VBComponents(Worksheets(ActiveSheet.Name).CodeName).Properties("Codename")https://stackoverflow.com/questions/6095217
复制相似问题