我有一个错误,上面写着"编译错误,ByRef参数类型不匹配"。任何人都可以让我知道为什么会出现此错误或如何解决此问题?
答案 0 :(得分:1)
当你通过引用传递参数时,这意味着你传递一个函数或者你之前的相同的值。它希望能够获得相同的。快速解决问题的方法可能是将函数/子定义更改为expect variant或确保传递正确的类型。
希望这有所帮助,下次留下一些代码,以便我们可以提供更多帮助。
答案 1 :(得分:1)
你的潜艇声明是:
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"
(String
)至FieldName
(a String
)mycriteria
(Variant
)至mycriteria
(a String
)argcount
(Variant
)至argcount
(a Integer
)由于传递给myCriteria
和argCount
的变量不具有相同的数据类型,因此会出错。
解决问题的最佳方法(即使你没有遇到问题也是最好的办法)就是声明你所有的变量。
因此,请将以下语句(至少)添加到cmdsearch1_Click
子例程:
Dim mycriteria As String
Dim argcount As Integer