问题描述
当带有要排序的数据的工作表处于活动状态时,该代码可以正常工作(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