excel - 使用 Sheets.delete 时 Excel VBA 索引超出范围
问题描述
在以下代码的几次迭代之后,我总是得到索引超出范围的错误。
For i = myworksheet.index To Worksheets.count
Sheets(i).delete
Next i
解决方案
您不应该以这种方式删除工作表。
考虑一下你要求它做什么。假设您有 5 个工作表 - Sheet1、Sheet2 .. Sheet 5。
假设myworksheet
是 Sheet3 ( i=3
)。
循环开始时,i
为 3。
Sheet3
被删除。
循环重新开始,i
现在是 4。
但是,现在只有 4 个工作表。所以Sheet5
( i=4
) 被删除。
循环重新开始,i
现在是 5。
但是,现在只有 3 个工作表。没有要删除的索引为 5 的工作表。
实现目标的一种(多种)方法是执行以下操作:
i = myworksheet.Index
Do Until Worksheets.Count = i - 1
Worksheets(Worksheets.Count).Delete
Loop
需要指出的一件事..在您的代码中,您似乎正在删除 start sheet myworksheet
。正因为如此,Do Until...
我创建的循环在 i-1 结束后停止, myworksheet
被删除。如果您不希望发生这种情况,请删除- 1
. 如果您确实希望发生这种情况,则需要注意,如果索引myworksheet
为 1,它将出错 - 因为所有工作簿必须至少包含 1 个工作表。
推荐阅读
- drupal-7 - A-Frame Drupal 集成
- jquery - 我无法在 jquery 的每个函数中显示多个图像
- typescript - Typescript - 如何访问通过命名空间声明的类?
- node.js - 使用节点的智能合约部署不起作用
- java - Java 中的 Google Sheets API 共享权限
- angular - 角 | 使用生产环境变量启动测试服务器
- ionic-framework - 实用程序 CLI 意外关闭(退出代码 1):Ionic
- notifications - 锁屏通知抖动
- shell - Makefile 没有检测到 Python
- python - 如何更改 Dash (Plotly) 中的语言/区域设置或 Plotly 工具栏的标签?