是否可以在不选择该工作表的情况下对另一个工作表中的列进行排序? 问题是当我运行这段代码时,我希望隐藏这个工作表,当我需要对表进行排序时,我不希望它闪存到它。这是我的代码...这有效,但它显然选择了工作表并显示另一个工作表。也许用“制作活动表”的东西可以工作,然后说'制作活动单元'。我不确定。多谢你们。
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
答案 0 :(得分:6)
此:
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
答案 1 :(得分:1)
添加ScreenUpdating
Application.ScreenUpdating = False
#Your Code
Application.ScreenUpdating = True
只需确保在设置ScreenUpdating = True
答案 2 :(得分:-1)
这里的问题来自VBA排序方法的Key1 arguments
。即使我们在相关工作表中明确传递范围,但在涉及Key1:=Range(…)
时,VBA会自动采用ActiveSheet.Range(…)
。
如果我们选择了其他工作表而不是排序数据工作表,则VBA将显示运行时错误。
要解决此问题,请将代码更改为Key1:=Your_Sheet_With_Data.Range(Your_Range)
。例如,可以将上述代码固定为
Key1:=Worksheets("RawDataLines").Range("Q5")