首页 > 解决方案 > Application.Sheets.count 返回值减 1

问题描述

我正在尝试计算活动工作簿中的工作表。当我运行时Application.Sheets.Count,我得到的值与我预期的值相差 76,我得到 75。在项目资源管理器中,我发现了一个标有 ThisWorkbook 的奇怪工作表(参见下图中的工作表 52)。我真的很想了解这种行为,因为它对我以后的工作有影响。任何见解将不胜感激。

Private Sub UserForm_Initialize()
    Dim wsCnt As Long 
    wsCnt = Application.Sheets.Count
    MsgBox wsCnt
End Sub

在此处输入图像描述

编辑:鉴于下面的一些贡献,我提供以下内容以进一步澄清我所看到的内容,并更深入地了解为什么它在这种情况下很重要。

上图现在是我所看到的更完整的图片。请注意,ThisWorkbook它位于 Project Explorer 窗口的底部。然而,由于某种原因,表 52 也被称为ThisWorkbook

这在上下文中很重要,因为此值稍后用于递增所有创建的工作表,其数量将随时间变化。由于Sheet52增加了张数而不是张数,所以我要少一张。我可以想象引入一种解决方法,只需添加一个,然后检查以确保循环的每次迭代中工作表值不等于 52,但除了是一种不优雅的方法之外,如果异常作物,这也可能在未来引起问题又起来了。我真的很想了解这种行为。我在文档中没有找到任何内容表明需要创建此工作表,并且我没有看到ThisWorkbook之前创建的工作表就像 Sheet52 的情况一样,我也无法理解为什么需要创建它的任何原因。我尊重社区的集体智慧。

编辑2:关于重复的问题

这个问题是重复的建议源于我对所发生的事情的好奇Sheet52。然而,问题与获取错误的纸张计数有关,该帖子未解决。这些信息在某些方面具有指导意义,并最终使我更接近答案。

标签: vbauserformexcel-2016

解决方案


正如@BigBen 提到的,请进一步查看ThisWorkbook.

修改后的代码应该可以解决:

Private Sub UserForm_Initialize() 

   Dim wsCnt As Long 
   wsCnt = ActiveWorkbook.Worksheets.Count

   MsgBox wsCnt

End sub

推荐阅读