错误:编译错误,ByRef参数类型不匹配

时间:2017-05-18 05:49:25

标签: vba ms-access compiler-errors

我有一个错误,上面写着"编译错误,ByRef参数类型不匹配"。任何人都可以让我知道为什么会出现此错误或如何解决此问题?

2 个答案:

答案 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

这意味着您正试图通过:

  • cboProduct1Variant)到FieldValueVariant) - 因为Variant可以是Variant/Object,这是可能的cboProduct1是某种对象(ComboBox?),这将正确处理
  • "Product"String)至FieldName(a String
  • mycriteriaVariant)至mycriteria(a String
  • argcountVariant)至argcount(a Integer

由于传递给myCriteriaargCount的变量不具有相同的数据类型,因此会出错。

解决问题的最佳方法(即使你没有遇到问题也是最好的办法)就是声明你所有的变量。

因此,请将以下语句(至少)添加到cmdsearch1_Click子例程:

Dim mycriteria As String
Dim argcount As Integer