如何使宏不仅在此工作表中运行,还应在其他工作表中运行?
意思是当我有两个或更多相同的工作表并且我希望同一个宏在两个单独的工作上都由按钮触发。
Sub sort_test()
'
' sort_test Macro
'
'
Range("M4:O7").Select
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add(Range("O5:O7"), _
xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255, 0 _
, 0)
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add(Range("O5:O7"), _
xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255, _
192, 0)
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add(Range("O5:O7"), _
xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(192, 0 _
, 0)
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("M4:O7")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("M4").Select
End Sub
答案 0 :(得分:2)
未经测试,但类似这样:
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
答案 1 :(得分:-1)
您可以将活动工作表与
一起使用ActiveWorkbook.ActiveSheet
代替
ActiveWorkbook.Worksheets("Sheet1")
如果替换具体的工作表名称并将脚本应用于按钮,它将考虑相应的工作表。