除了Activesheet.Name之外还有另一种方法可以让哪个工作表调用宏吗?
我目前有代码,按下按钮然后运行模拟程序,然后运行程序后,它会转到工作簿中的另一个工作表并粘贴信息。
如果我在每张纸上一次运行一个宏,但是我希望能够同时运行它们,这是有效的。
实施例: 我有一个包含按钮的输入表“Run1”,然后在模拟完成后,它会在名为“Results1”的工作表中执行某些操作
我创建了“Run1”和“Results1”的重复工作表,并在最后增加了数字
If ActiveSheet.Name = "Run1" Then
t = 1
End If
If ActiveSheet.Name = "Run2" Then
t = 2
End If
If ActiveSheet.Name = "Run3" Then
t = 3
End If
If ActiveSheet.Name = "Run4" Then
t = 4
End If
If ActiveSheet.Name = "Run5" Then
t = 5
End If
If ActiveSheet.Name = "Run6" Then
t = 6
End If
Worksheets("Results" & t).Activate
For Each A In ActiveSheet.ChartObjects("Chart 9").Chart.SeriesCollection
A.Delete
Next A
如果我同时单击所有按钮,则会抛出错误,因为它尝试根据用户当前所在的“运行”表单转到“结果”表。并且由于模拟程序正在运行,代码没有同步完成,excel无法找到第一个按钮宏正在调用的结果表,因为它没有激活。
答案 0 :(得分:2)
首先阅读此链接并调整代码以删除所有不需要的选择/激活操作: How to avoid using Select in Excel VBA
然后你可以这样做:
If ActiveSheet.Name Like "Run*" Then
With Worksheets("Results" & Replace(ActiveSheet.Name, "Run", ""))
'? all your charts are called "Chart 9"?
For Each A In .ChartObjects("Chart 9").Chart.SeriesCollection
A.Delete
Next A
.Activate
End With
End If