vba - 在所有工作表上应用 VBA 代码

标签 vba excel

我的 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

但这不起作用。很高兴有任何帮助!

最佳答案

如果将代码放入模块中,这是一种使代码正常工作的方法。它避免了 SelectActive ,因此它使它更加健壮:

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

关于vba - 在所有工作表上应用 VBA 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50566230/

相关文章:

arrays - 在 VBA 中排列数组以计算 Shapley-Shubik 功率指数

excel - 尝试使用 VBA 从 excel 创建文件夹和子文件夹

vba - Powerpoint VBA - 均匀分布列

excel - 简单的数组循环复制和粘贴

excel - 如何使用 XML 解析更可靠地删除 Excel 单元格中的删除线文本?

sql - 处理使用 SUM 的 SQL 查询中的 NULL 值

excel - 如何使用 EXCEL 公式从一列单元格中提取具有特定模式的文本?

arrays - 使用数组比较两个工作表

python - 字典到数据帧错误: "If using all scalar values, you must pass an index"

excel - 向 Excel 中单元格中的每个单词添加一个字符,并带有跳过某些单词的选项