重新打开启用宏的Excel电子表格时,我收到标题中声明的错误。电子表格有大约8个标签,它们的格式几乎完全相同。我的宏根据最后一列中的数据验证单元格值将行移动到不同的工作表。只有一行代码可以对任何内容进行排序,它正在排序第6页,而不是第5页。
Worksheets("Follow-Ups").Range("A:AD").Sort Key1:=Range("AC2"), Order1:=xlAscending, Header:=xlYes
我已经查看了有关此错误的StackOverflow上的其他一些类似问题,但似乎没有任何明确的理由说明为什么会发生这种情况。
我在我的VBA代码中搞砸了一些东西,但错误似乎总是回归。我正在将我的数据复制到一个全新的工作簿并重新编写代码。我也将它保存为二进制excel文件而不是宏启用。
是否有其他人遇到此错误以及我可以尝试防止此错误再次发生的其他一些可能的解决方案。
答案 0 :(得分:2)
可能是由于不合格的范围。
Worksheets("Follow-Ups").Range("A:AD").Sort Key1:=Range("AC2"), ...
^^^^^^
假设在运行此语句时,当前活动的工作表不是“Follow-Ups”,而是另一个(即Sheet5
)。您将使用属于另一个工作表(当前活动工作表)的键范围从“Follow-Ups”中排序范围。这会导致运行时错误。
限定范围是强制性的:
Worksheets("Follow-Ups").Range("A:AD").Sort Key1:=Worksheets("Follow-Ups").Range("AC2"), Order1:=xlAscending, Header:=xlYes
您可以使用With
子句简化它:
With Worksheets("Follow-Ups")
.Range("A:AD").Sort Key1:=.Range("AC2"), Order1:=xlAscending, Header:=xlYes
End With
VBA显示的错误可能是因为Sheet5
是活动工作表,并且肯定无法使用其范围“AC2”作为密钥。