我的VBA代码按特定列对工作表进行排序,即" AT"。我喜欢的是这个VBA同时应用于工作簿的所有工作表。我原来的工作代码如下:
Dim sort As String
Dim area As String
area = "A4:FJ4100"
sort = "AT"
ActiveSheet.Range(area).Sort _
Key1:=Range(sort & "1"), Order1:=xlDescending, _
Header:=xlGuess, MatchCase:=False, _
Orientation:=xlTopToBottom
Application.ScreenUpdating = False
我尝试添加
dim sh as Worksheet
For each sh in ActiveWorkbook.Worksheets
sh.activate
"my code"
Next
但这不起作用。很高兴为您提供帮助!
答案 0 :(得分:1)
如果将代码放在模块中,这是一种使代码正常工作的方法。它避免了Select
和Active
,因此它使其更加健壮:
Public Sub Main()
Dim sh As Worksheet
For Each sh In ThisWorkbook.Worksheets
SortSomething sh
Next sh
End Sub
Sub SortSomething(sh As Worksheet)
Dim sort As String
Dim area As String
area = "A4:FJ4100"
sort = "AT"
sh.Range(area).sort _
Key1:=sh.Range(sort & "1"), Order1:=xlDescending, _
Header:=xlGuess, MatchCase:=False, _
Orientation:=xlTopToBottom
Application.ScreenUpdating = False
End Sub
答案 1 :(得分:0)
在“For Each”循环中,激活工作表后,您需要在循环'ws'var上应用范围。 试试这个,它对我来说很好用:
gdal.TranslateOptions(creationOptions=['STREAMABLE_OUTPUT=TRUE'])