如何在MS EXCEL VBA中的非活动工作表中引用UsedRange

问题描述

当带有要排序的数据的工作表处于活动状态时,该代码可以正常工作(sheet2)。但是我实际上在另一个工作表(sheet1)上有宏按钮。这是模块中的代码

    Sheet2.UsedRange.sort Key1:=Range("O1"),Key2:=Range("L1"),Key3:=Range("I1"),Header:=xlYes,_
    Order1:=xlAscending,Order2:=xlAscending,Order3:=xlDescending

当我从sheet1中的按钮运行宏时(即,工作表1现在是活动工作表,但没有需要排序的数据),我收到运行时错误1004,排序参考无效。这是因为当前活动的工作表(sheet1)上没有数据。

如何正确引用工作表2中的usedrange,以便即使工作表处于非活动状态也可以对数据进行排序?

解决方法

您的问题不是Sheet2.UsedRange,而是不合格的Range要求使用关键参数,这意味着这些参数隐含为ActiveSheet.Range("O1")ActiveSheet.Range("L1"),依此类推。 / p>

在每个Sheet2调用之前添加Range,或者使用With块并确保在每个.调用之前添加句点Range,以及UsedRange之前。

With Sheet2
    .UsedRange.Sort Key1:=.Range("O1"),Key2:=.Range("L1"),Key3:=.Range("I1"),Header:=xlYes,_
    Order1:=xlAscending,Order2:=xlAscending,Order3:=xlDescending
End With

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...