0

是否可以在不选择该工作表的情况下对另一个工作表中的列进行排序?问题是,当我运行此代码时,我希望隐藏此工作表,并且我不希望它在我需要对表格进行排序时闪过。这是我的代码...这可行,但它显然选择了工作表并向您显示另一张工作表。也许带有“制作活动表”的东西会起作用,您可以这样做然后说“制作活动单元格”。我不知道。多谢你们。

 Application.Worksheets("RawDataLines").Select

    Application.Worksheets("RawDataLines").Range("Q5").Select
    Application.Worksheets("RawDataLines").Range("A4:R1007").Sort Key1:=Range("Q5"), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

    Application.Worksheets("RawDataLines").Range("A5").Select
    Application.Worksheets("RawDataLines").Range("A4:R1007").Sort Key1:=Range("A5"), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
4

3 回答 3

8

这个:

Application.Worksheets("RawDataLines").Select
Application.Worksheets("RawDataLines").Range("Q5").Select
Application.Worksheets("RawDataLines").Range("A4:R1007").Sort ... 

可能是这样的:

With Application.Worksheets("RawDataLines")
    .Range("A4:R1007").Sort  Key1:= .Range("A5")'...
End With
于 2013-09-25T17:50:53.517 回答
1

添加ScreenUpdating

Application.ScreenUpdating = False
 #Your Code
Application.ScreenUpdating = True

只需确保在设置之前将选择设置回您想要的工作表ScreenUpdating = True

于 2013-09-25T17:50:48.957 回答
0

这里的问题来自Key1 argumentsVBA 排序方法。即使我们使用相关工作表明确传递范围,当涉及到 时Key1:=Range(…),VBA 也会自动采用ActiveSheet.Range(…).

如果我们选择了其他工作表而不是排序数据表,VBA 会显示运行时错误。

要解决此问题,请将代码更改为Key1:=Your_Sheet_With_Data.Range(Your_Range). 例如,上面提到的代码可以固定更改代码为

Key1:=Worksheets("RawDataLines").Range("Q5")
于 2019-08-18T04:38:38.840 回答