如何在 MS EXCEL VBA 中引用非活动 sheet 中的 UsedRange
How to reference UsedRange in non active sheet in MS EXCEL VBA
当包含要排序的数据的 sheet 处于活动状态 (sheet2) 时,代码工作正常。但我实际上在另一个 sheet (sheet1) 上设置了宏按钮。这是模块中的代码:
Sheet2.UsedRange.Sort Key1:=Range("O1"), Key2:=Range("L1"), Key3:=Range("I1"), Header:=xlYes, _
Order1:=xlAscending, Order2:=xlAscending, Order3:=xlDescending
当我 运行 来自 sheet1 中按钮的宏时(即 sheet 1 现在处于活动状态 sheet,但不包含需要排序的数据) 我收到 运行-时间错误 1004,排序参考无效。这是因为现在活动的 sheet (sheet1).
上没有数据
如何正确引用 sheet 2 中的使用范围,以便在 sheet 处于非活动状态时对数据进行排序?
您的问题不是 Sheet2.UsedRange
,而是不合格的 Range
调用关键参数,这意味着隐含这些是 ActiveSheet.Range("O1")
、ActiveSheet.Range("L1")
等等.
在每个 Range
调用之前添加 Sheet2
,或者使用 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
当包含要排序的数据的 sheet 处于活动状态 (sheet2) 时,代码工作正常。但我实际上在另一个 sheet (sheet1) 上设置了宏按钮。这是模块中的代码:
Sheet2.UsedRange.Sort Key1:=Range("O1"), Key2:=Range("L1"), Key3:=Range("I1"), Header:=xlYes, _
Order1:=xlAscending, Order2:=xlAscending, Order3:=xlDescending
当我 运行 来自 sheet1 中按钮的宏时(即 sheet 1 现在处于活动状态 sheet,但不包含需要排序的数据) 我收到 运行-时间错误 1004,排序参考无效。这是因为现在活动的 sheet (sheet1).
上没有数据如何正确引用 sheet 2 中的使用范围,以便在 sheet 处于非活动状态时对数据进行排序?
您的问题不是 Sheet2.UsedRange
,而是不合格的 Range
调用关键参数,这意味着隐含这些是 ActiveSheet.Range("O1")
、ActiveSheet.Range("L1")
等等.
在每个 Range
调用之前添加 Sheet2
,或者使用 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