vba - 下标超出范围重命名工作表后出错

标签 vba excel

我做了一个小项目,其中包含 5 个 Excel 工作表,代码工作正常,我也得到了准确的结果,但如果我将工作表从sheet1 重命名为其他名称,我会收到下标超出范围错误。

造成这种情况的原因是什么以及需要采取哪些措施来克服这个问题。请帮忙。

下面是代码

Public  Sub amount_final()

Dim Row1Crnt As Long
Dim Row2Crnt As Long


With Sheets("sheet4")
Row1Last = .Cells(Rows.Count, "B").End(xlUp).Row
End With

Row1Crnt = 2
With Sheets("sheet3")
Row2Last = .Cells(Rows.Count, "B").End(xlUp).Row
End With

最佳答案

代码本身没有任何问题。如果 Excel 无法找到特定工作表,您将收到 下标超出范围 错误,该错误在您重命名后非常明显。例如,如果您将工作表“Sheet3”重命名为“SheetXYZ”,那么 Excel 将无法找到它。

避免此类错误的唯一方法是使用工作表的 CODENAME。查看快照

enter image description here

这里我们有一张名为“重命名前的示例名称”的工作表

所以考虑这段代码

Sheets("Sample Name before Renaming").Range("A1").Value = "Blah Blah"

相同的代码可以写为

Sheet2.Range("A1").Value = "Blah Blah"

现在,无论您重命名工作表多少次,上面的代码都将始终有效:)

HTH

席德

关于vba - 下标超出范围重命名工作表后出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9923439/

相关文章:

vba - 在字符串中搜索双引号

python - 使用 Pandas 读取带有多个标题的 Excel 工作表

excel - 将 XLS(x) 数据转换为 Angular Material 数据表

vba - 检索显示奇怪行为的日历项目(Outlook API、WebDAV)

连接字母和变量以创建单元格引用的 VBA 代码

excel - VBA - 将光标位置作为单元格地址

vba - 在 VBA 中比较字符串的最佳方法?

vba - 返回单独工作簿中特定值的单元格位置

VBA创建对象

excel - 将字符串转换为 Excel 日期和时间,具有特定的字符串格式