下午,
我有一个函数可以根据日期计算星期几名称:
Function calcWeekdayName(calcDate As Date) As String
Dim calcWeekday As Integer
calcWeekday = Weekday(calcDate, vbMonday)
calcWeekdayName = weekdayName(calcWeekday, True, vbMonday)
End Function
Run Code Online (Sandbox Code Playgroud)
然后我使用一个公共变量将日期传递给这个函数。公共变量在表 2 上声明:
Public searchDate As Date
Run Code Online (Sandbox Code Playgroud)
然后在我的函数下面的子中设置变量:
searchDate = Worksheets("Update Data").Range("B3").Value
Run Code Online (Sandbox Code Playgroud)
更新数据上的 B3 格式为 dd/mm/yyyy
当我尝试使用函数和 searchDate 变量设置变量 weekdayName 时,我得到了 ByRef 参数类型不匹配。
在工作表 2 上:
Public weekdayName As String
Run Code Online (Sandbox Code Playgroud)
在子:
weekdayName = calcWeekdayName(searchDate)
Run Code Online (Sandbox Code Playgroud)
B3 的当前值是 28/03/2016 但我也尝试过 01/01/2016。
干杯
Sheet2是一个工作表对象 - 它的代码隐藏是一个类模块。
类模块和“标准模块”的不同之处在于它们的Public成员需要一个实例才能访问。
所以你可以做Sheet2.MyPublicVariable = 42,但你不能做,MyPublicVariable = 42 除非你在声明那个变量的同一个模块中。
您可以通过Option Explicit在模块顶部指定来防止您的问题;然后,searchDate将无法访问并因此未声明,并且 VBA 代码将拒绝编译。
通过不指定Option Explicit,您允许使用未声明的变量,这就是 VBA 中万恶之源。
用。选项。明确的。