我有一个错误,提示“编译错误,ByRef参数类型不匹配”。谁能让我知道为什么会发生此错误或如何解决此问题?
最佳答案
您的子项的声明为:
Private Sub AddtoWhere(FieldValue As Variant, FieldName As String, mycriteria As String, argcount As Integer)
您将其称为(例如):
AddtoWhere cboProduct1, "Product", mycriteria, argcount
因为您仅声明了一个变量(
Search
为String
),所以默认情况下,所有其他变量都声明为Variant
。这意味着您正在尝试通过:
cboProduct1
(一个Variant
)到FieldValue
(一个Variant
)-因为Variant
可以是Variant/Object
,所以cboProduct1
可能是某种对象(ComboBox?),并且可以正确处理"Product"
(a String
)到FieldName
(a String
)mycriteria
(a Variant
)到mycriteria
(a String
)argcount
(a Variant
)到argcount
(a Integer
)因为传递给
myCriteria
和argCount
的变量没有相同的数据类型,所以会出现错误。解决问题的最佳方法(即使没有问题也要做的最好的事情)是声明所有变量。
因此,将以下语句(至少)添加到
cmdsearch1_Click
子例程中:Dim mycriteria As String
Dim argcount As Integer
关于vba - 错误: Compile Error,ByRef argument type mismatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44039549/