Vba 在多个工作表中运行一个宏

Vba 在多个工作表中运行一个宏,vba,excel,worksheet,Vba,Excel,Worksheet,如何使宏不仅在该工作表中运行,还可以在其他工作表中运行 这意味着,当我有两个或更多相同的工作表,我希望同一个宏在这两个工作表上独立地由一个按钮触发 子排序_测试() ' '排序测试宏 ' ' 范围(“M4:O7”)。选择 ActiveWorkbook.Worksheets(“Sheet1”).Sort.SortFields.Clear ActiveWorkbook.Worksheets(“Sheet1”).Sort.SortFields.Add(范围(“O5:O7”)_ xlSortOnCel

如何使宏不仅在该工作表中运行,还可以在其他工作表中运行

这意味着,当我有两个或更多相同的工作表,我希望同一个宏在这两个工作表上独立地由一个按钮触发

子排序_测试()
'
'排序测试宏
'
'
范围(“M4:O7”)。选择
ActiveWorkbook.Worksheets(“Sheet1”).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(“Sheet1”).Sort.SortFields.Add(范围(“O5:O7”)_
xlSortOnCellColor,xlAscending,xlSortNormal).SortOnValue.Color=RGB(255,0_
, 0)
ActiveWorkbook.Worksheets(“Sheet1”).Sort.SortFields.Add(范围(“O5:O7”)_
xlSortOnCellColor,xlSortNormal,xlSortNormal).SortOnValue.Color=RGB(255_
192, 0)
ActiveWorkbook.Worksheets(“Sheet1”).Sort.SortFields.Add(范围(“O5:O7”)_
xlSortOnCellColor,xlAscending,xlSortNormal).SortOnValue.Color=RGB(192,0_
, 0)
使用ActiveWorkbook.Worksheets(“Sheet1”).Sort
.SetRange范围(“M4:O7”)
.Header=xlYes
.MatchCase=False
.方向=xlTopToBottom
.SortMethod=xl拼音
.申请
以
范围(“M4”)。选择

End Sub
未经测试,但类似于以下内容:

Sub Test1()
    DoSort ThisWorkbook.Sheets("Sheet1")
End Sub

Sub Test2()
    DoSort ThisWorkbook.Sheets("Sheet2")
End Sub

Sub DoSort(sht As Worksheet)
    With sht.Sort

        .SortFields.Clear
        .SortFields.Add(sht.Range("O5:O7"), xlSortOnCellColor, xlAscending, _
            , xlSortNormal).SortOnValue.Color = RGB(255, 0, 0)
        .SortFields.Add(sht.Range("O5:O7"), xlSortOnCellColor, xlAscending, _
            , xlSortNormal).SortOnValue.Color = RGB(255, 192, 0)
        .SortFields.Add(sht.Range("O5:O7"), xlSortOnCellColor, xlAscending, _
            , xlSortNormal).SortOnValue.Color = RGB(192, 0, 0)

        .SetRange sht.Range("M4:O7")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply

    End With

    sht.Range("M4").Select

End Sub

如果您只需要一个按钮对activesheet进行排序,那么只需在未测试的现有代码中使用
activesheet
,但类似于以下内容:

Sub Test1()
    DoSort ThisWorkbook.Sheets("Sheet1")
End Sub

Sub Test2()
    DoSort ThisWorkbook.Sheets("Sheet2")
End Sub

Sub DoSort(sht As Worksheet)
    With sht.Sort

        .SortFields.Clear
        .SortFields.Add(sht.Range("O5:O7"), xlSortOnCellColor, xlAscending, _
            , xlSortNormal).SortOnValue.Color = RGB(255, 0, 0)
        .SortFields.Add(sht.Range("O5:O7"), xlSortOnCellColor, xlAscending, _
            , xlSortNormal).SortOnValue.Color = RGB(255, 192, 0)
        .SortFields.Add(sht.Range("O5:O7"), xlSortOnCellColor, xlAscending, _
            , xlSortNormal).SortOnValue.Color = RGB(192, 0, 0)

        .SetRange sht.Range("M4:O7")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply

    End With

    sht.Range("M4").Select

End Sub

如果您只需要一个按钮来对activesheet进行排序,那么只需在现有代码中使用
activesheet
,这是一个很好的例子,说明了不使用“处处选择”可以实现清晰性。。。加一!这是一个很好的例子,说明了不使用“处处选择”可以实现清晰性。。。加一!