【发布时间】:2017-10-05 20:44:50
【问题描述】:
我有 3 个宏,我想将它们组合成一个按顺序运行的宏。我想运行的第一个刷新excel工作簿中的所有数据,接下来的两个删除工作表上的特定行。我拥有的三个宏单独工作,但我想将这三个宏结合起来,以便最终用户可以一次运行它们。我认为我遇到的问题是我错误地使这些宏在特定工作表上运行,而不是在模块上运行。我坚持将它们组合在一起,因为宏已经在不同的工作表中。
第一个宏:
Sub Macro1()
ActiveWorkbook.RefreshAll
Sheets("ManagementDashboard").Select
End Sub
第二个宏(在名为“RawDataPltzr”的工作表中运行)
Sub DeleteRows()
Last = Cells(Rows.Count, "c").End(xlUp).Row
For i = Last To 1 Step -1
'if cell value is less than 100
If (Cells(i, "c").Value) < 100 Then
'delete entire row
Cells(i, "c").EntireRow.Delete
End If
Next i
End Sub
第三个宏(在名为“RawDataLoader”的工作表中运行,也与第二个宏相同,只是需要在不同的工作表中运行)
Sub DeleteRows()
Last = Cells(Rows.Count, "c").End(xlUp).Row
For i = Last To 1 Step -1
'if cell value is less than 100
If (Cells(i, "c").Value) < 100 Then
'delete entire row
Cells(i, "c").EntireRow.Delete
End If
Next i
End Sub
最后,我希望选择工作表“ManagementDashboard”,就像在第一个宏中一样,但我需要在运行之前运行第二个和第三个宏。任何帮助将不胜感激!
【问题讨论】:
-
完全限定您的工作表参考。现在的代码方式,它假设 ActiveSheet,这会导致很多问题。