首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Worksheet.CodeName为空

Worksheet.CodeName为空
EN

Stack Overflow用户
提问于 2011-05-23 17:18:50
回答 4查看 2.1K关注 0票数 4

我正在尝试通过新添加的工作表的CodeName属性来引用它。问题是,除非从调试器运行,否则CodeName将返回空字符串。

代码语言:javascript
复制
Set tableSheet = Worksheets.Add(After:=Worksheets(Worksheets.Count))
MsgBox tableSheet.CodeName

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-25 13:08:20

我可以复制你的问题。一些谷歌搜索显示了这个答案:

代码语言:javascript
复制
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。

票数 2
EN

Stack Overflow用户

发布于 2011-05-23 19:28:42

我可以确认这种行为。我以前从未使用过CodeName,有时我会使用Name来引用工作表。

代码语言:javascript
复制
Sub Test()
    Dim tableSheet As New Worksheet

    Set tableSheet = Worksheets.Add(After:=Worksheets(Worksheets.Count))
    MsgBox tableSheet.Name
End Sub

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

票数 1
EN

Stack Overflow用户

发布于 2021-06-09 20:25:51

我还需要为新的工作表读取代号。这个解决方案对我很有效:

  1. 转到信任中心,在宏设置下选中“信任对VBA项目模型的访问”。
  2. 现在只需将这三行放在您需要代码名的行前。没有这个它是不会工作的。这是VBA的怪癖。

代码语言:javascript
复制
On Error Resume Next
Debug.Print ActiveWorkbook.VBProject.VBComponents(Worksheets(ActiveSheet.Name).CodeName).Properties("Codename")
On Error GoTo 0

  1. 现在以如下方式使用您的代号:

代码语言:javascript
复制
strActiveSheetCodeName = ActiveWorkbook.VBProject.VBComponents(Worksheets(ActiveSheet.Name).CodeName).Properties("Codename")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6095217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档