vba - 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
。然而,问题与获取错误的纸张计数有关,该帖子未解决。这些信息在某些方面具有指导意义,并最终使我更接近答案。
解决方案
正如@BigBen 提到的,请进一步查看ThisWorkbook
.
修改后的代码应该可以解决:
Private Sub UserForm_Initialize()
Dim wsCnt As Long
wsCnt = ActiveWorkbook.Worksheets.Count
MsgBox wsCnt
End sub
推荐阅读
- angular-directive - 在另一个指令中使用指令
- string - 拆分路径并仅取出最后一部分(文件名)Powershell
- python - 熊猫在范围之间找到 idxmax()
- python - 修改 python 文件,就像它是一个文本文件一样,但仍然有变量等
- reactjs - 带有 react-native 元素的嵌套数据
- java - 如何将mysql命令传递给ProcessBuilder
- r - 带有 R 的随机森林:varImp(model) 和 model$importance[,1] 之间的 %IncMSE 不匹配
- c++ - 使用 #ifdefs 进行代码选择会创建丑陋的结构 - 替代方案?
- php - Laravel 5.7.8 验证错误未显示在联系人视图中
- java - 除非单击可编辑单元格,否则 SWT TableViewer 单元格不会显示图像