Excel 从VBA中的多个按钮调用同一个子节点
我在同一列但不同行的spreadhseet上有多个按钮(活动x)。这些按钮捕获活动的开始时间。 如果按下按钮1,则其旁边的单元格应按当前时间填充。 如果按下按钮2,则其旁边的单元格应按当前时间填充。等等 我用VBA编写了一个SUB,如下所示:Excel 从VBA中的多个按钮调用同一个子节点,excel,vba,Excel,Vba,我在同一列但不同行的spreadhseet上有多个按钮(活动x)。这些按钮捕获活动的开始时间。 如果按下按钮1,则其旁边的单元格应按当前时间填充。 如果按下按钮2,则其旁边的单元格应按当前时间填充。等等 我用VBA编写了一个SUB,如下所示: Private Sub StartTimer_Click() Range("I4").Value = Now End Sub 我不想为每个按钮操作重复此代码。请告诉我如何使其成为动态的。创建一个标准模块,并将过程放在其中。 虽然可以在私有模块中共
Private Sub StartTimer_Click()
Range("I4").Value = Now
End Sub
我不想为每个按钮操作重复此代码。请告诉我如何使其成为动态的。创建一个标准模块,并将过程放在其中。 虽然可以在私有模块中共享过程,但最好将任何共享过程放在共享模块中 在VBA编辑器中,单击插入模块 粘贴到其中,并给它一个唯一的名称。使用您的示例,您可以执行以下操作:
Public Sub SetTimeValue()
Range("I4").Value = Now
End Sub
…然后从另一个公用存根调用此公用存根,如:
Private Sub StartTimer_Click()
SetTimeValue
End Sub
…以及您需要调用代码的任何其他位置
我假设您关心的实际过程有不止一行代码,否则重复复制它并不是一个真正的问题
更多信息:
- MSDN:
- 办公室支助:
- 奇普·皮尔森:
- 电源预售表:
- MVP:
Public Sub SetTimeValue()
Range("I4").Value = Now
End Sub
…然后从另一个公用存根调用此公用存根,如:
Private Sub StartTimer_Click()
SetTimeValue
End Sub
…以及您需要调用代码的任何其他位置
我假设您关心的实际过程有不止一行代码,否则重复复制它并不是一个真正的问题
更多信息:
- MSDN:
- 办公室支助:
- 奇普·皮尔森:
- 电源预售表:
- MVP:
- 一个简单的WithEvents示例:
在类(命名为clsButtons)中:
在sheetcode(带按钮的代码)中:
一个简单的WithEvents示例: 在类(命名为clsButtons)中: 在sheetcode(带按钮的代码)中:
尝试用谷歌搜索“VBA控件数组”,如果这些确实是ActiveX按钮(与窗体按钮相反),则每个按钮都会有不同的事件处理程序,除非您使用。因此,如果您没有,因此您有多个处理程序,那么唯一的优化就是在所有处理程序中使用相同的代码,而不是略有不同的代码。为此,您只需要查找要从button对象更改的单元格。您可以按照EvR的建议,以按钮的名称对其进行编码,也可以使用按钮的
TopLeftCell
作为要偏移的地标。尝试通过谷歌搜索“VBA控件数组”如果这些确实是ActiveX按钮(与表单按钮相反),则每个按钮都会有不同的事件处理程序,除非您使用。因此,如果您没有,因此您有多个处理程序,那么唯一的优化就是在所有处理程序中使用相同的代码,而不是略有不同的代码。为此,您只需要查找要从button对象更改的单元格。您可以按照EvR的建议,以按钮的名称对其进行编码,也可以使用按钮的TopLeftCell
作为要偏移的地标。感谢您的回复。问题是:我有多个按钮StartTimer1、StartTimer2、StartTimer3。。。。如何为每个按钮调用StartTimer\u Click()。每次通话时,手机都必须是不同的。在本例中:范围(“I4”).Value=Now。对于第二个按钮,它可以是范围(“I7”)。值=现在。对于第三个按钮,它可能是Range(“I10”).Value=Now如果它实际上只是一行代码(比如Range(“I4”).Value=Now
),那么您根本不需要任何其他过程。只需将这一行作为每个按钮的代码。更多信息请参见我提供的链接。最后一个链接可能对您特别有用。谢谢您的回复。问题是:我有多个按钮StartTimer1、StartTimer2、StartTimer3。。。。如何为每个按钮调用StartTimer\u Click()。每次通话时,手机都必须是不同的。在本例中:范围(“I4”).Value=Now。对于第二个按钮,它可以是范围(“I7”)。值=现在。对于第三个按钮,它可能是Range(“I10”).Value=Now如果它实际上只是一行代码(比如Range(“I4”).Value=Now
),那么您根本不需要任何其他过程。只需将这一行作为每个按钮的代码。更多信息请参见我提供的链接。最后一个链接可能对您特别有用。根据按钮推断要更改的单元格的另一种方法是使用按钮的TopLeftCell
,因为按钮总是在应该更改的单元格旁边。根据按钮推断要更改的单元格的另一种方法是使用按钮的TopLeftCell
,由于按钮总是在单元格旁边,因此它应该更改。