我在网上关注了一些例子,我试图将一个值从一个sub传递到VBA中的另一个sub但是得到错误:
编译错误: 过程声明与具有相同名称的事件或过程的描述不匹配。
Sub next_sat_click()
Dim iweekday As Integer
Dim nextsat As String
Dim index As Integer
Dim str_game_date As String
iweekday = weekday(Now(), vbSunday)
nextsat = Format((Now + 7 - iweekday), "mm-dd-yy")
Call set_button_Click(nextsat)
End Sub
Sub set_button_Click(ByRef nextsat As String)
......
End Sub
答案 0 :(得分:0)
更改子名称,如SetButtonOnClick。
如果你有一个名字相同的按钮,那么_cel关键字是excel为按钮上的Click事件保留的。
答案 1 :(得分:0)
您无法更改事件处理程序的参数(参数名称除外)。这也意味着如果没有预期的参数,您就无法添加任何参数。甚至Optional ByRef nextsat As String
都不起作用。
在UserForm中,有三种方法可以在事件处理程序之间传递值:
UserForm.tag
属性(建议用于简单值,如字符串)。如果它已经永久使用,显然不能使用; 我使用过第二种方法:
Sub next_sat_click()
Dim iweekday As Integer
Dim nextsat As String
Dim index As Integer
Dim str_game_date As String
iweekday = Weekday(Now(), vbSunday)
nextsat = Format((Now + 7 - iweekday), "mm-dd-yy")
Me.Tag = nextsat
End Sub
Sub set_button_Click()
Dim nextsat As String
nextsat = Me.Tag
......
End Sub
在您的情况下,更好的解决方案可能是拥有一个可见 TextBox,您可以在其中存储用户点击next_sat
时的计算日期,以便用户可以看到它。然后在set_button
处理程序中,从TextBox.Text
抓取它。