Vba 如何通过";将日期选择器的值传递给宏;“分配宏…”;窗户?

Vba 如何通过";将日期选择器的值传递给宏;“分配宏…”;窗户?,vba,Vba,(软件版本:Excel 2010-Microsoft日期和时间选择器控件6.0(SP4)) 在工作表“sheet1”中,我有一个名为“foobarCalendar”的ActiveX日期选择器控件日历。 在它旁边我放了一个按钮,在它的“Assign Macro…”中,我想指定一个宏,参数是这个日历的日期“foobarCalendar” 在VBA中,我可以通过“sheet1.foobarCalendar”获取此日期,但是我找不到任何有效的方法将其作为“Assign Macro…”窗口中的参数 是否有

(软件版本:Excel 2010-Microsoft日期和时间选择器控件6.0(SP4))

在工作表“sheet1”中,我有一个名为“foobarCalendar”的ActiveX日期选择器控件日历。 在它旁边我放了一个按钮,在它的“Assign Macro…”中,我想指定一个宏,参数是这个日历的日期“foobarCalendar”

在VBA中,我可以通过“sheet1.foobarCalendar”获取此日期,但是我找不到任何有效的方法将其作为“Assign Macro…”窗口中的参数

是否有有效的语法,或者根本不可能

(我遇到的另一个问题是,我的宏名称没有出现在列表中,但我发现这是因为Excel只显示在此列表中没有参数的宏,尽管我可以手动编写并成功使用它们)

例如,我尝试了“macroName sheet1.foobarCalendar”,但它不起作用。 我还尝试了许多其他语法,包括用于传递命名范围的语法和“evaluate”变体,但没有成功。可能吗

在VBA中,我可以通过“sheet1.foobarCalendar”获取此日期,但是我找不到任何有效的方法将其作为“Assign Macro…”窗口中的参数

你没有<代码>Sheet1.foobarCalendar已在范围内:让宏使用它

Public Sub MyMacro()
    Dim workingDate As Date
    workingDate = Sheet1.foobarCalendar
    '...
End Sub
也就是说,这是调用参数化宏的一种方法,但就我所能做到的而言,它不适用于变量参数,变量参数似乎必须是硬编码的值-语法要求用单引号括住“宏名称”,在参数前加一个空格,如下所示:

'Test "test"'
正确调用此宏:

Public Sub Test(ByVal value As String)
    MsgBox value
End Sub
但是,如果宏需要使用调用时工作表上存在的数据,则无需对其进行参数化。如果宏需要提示用户输入日期、路径或其他信息,那么它完全可以做到这一点


< P>注意,在64位主机上,日期选择器控件可能无法正常工作:考虑使用提示用户的日期,这不涉及32位ActiveX Tealth.< /P> AFAIK,您不能从那里传递参数,您需要从宏本身内部获得值。不能有参数。但您有两种选择:1)将日期选择器控件的处理硬编码到宏中,这样它就不需要参数;或2)在宏中,并根据需要进行操作。无论如何,“测试”会导致文件在重新启动时损坏(如果文件为xlsb)。