ByRef 参数类型不匹配 - Excel VBA

meg*_*n77 3 excel vba

下午,

我有一个函数可以根据日期计算星期几名称:

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。

干杯

Mat*_*don 5

Sheet2是一个工作表对象 - 它的代码隐藏是一个类模块

类模块和“标准模块”的不同之处在于它们的Public成员需要一个实例才能访问。

所以你可以做Sheet2.MyPublicVariable = 42,但你不能做,MyPublicVariable = 42 除非你在声明那个变量的同一个模块中

您可以通过Option Explicit在模块顶部指定来防止您的问题;然后,searchDate将无法访问并因此未声明,并且 VBA 代码将拒绝编译。

通过指定Option Explicit,您允许使用未声明的变量,这就是 VBA 中万恶之源。

用。选项。明确的。