【问题标题】:How to reference UsedRange in non active sheet in MS EXCEL VBA如何在 MS EXCEL VBA 的非活动工作表中引用 UsedRange
【发布时间】:2020-12-21 16:58:29
【问题描述】:

当带有要排序的数据的工作表处于活动状态(工作表 2)时,代码可以正常工作。但我实际上在不同的工作表(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,以便在工作表处于非活动状态的情况下对数据进行排序?

【问题讨论】:

标签: excel vba range worksheet


【解决方案1】:

你的问题不是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

【讨论】:

  • 不错的 BigBen。这样就解决了。这将很快被标记为答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-24
  • 2018-03-22
  • 2018-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多