vba - 错误: Compile Error,ByRef argument type mismatch

标签 vba ms-access compiler-errors

我有一个错误,提示“编译错误,ByRef参数类型不匹配”。谁能让我知道为什么会发生此错误或如何解决此问题?

最佳答案

您的子项的声明为:

Private Sub AddtoWhere(FieldValue As Variant, FieldName As String, mycriteria As String, argcount As Integer)

您将其称为(例如):
AddtoWhere cboProduct1, "Product", mycriteria, argcount

因为您仅声明了一个变量(SearchString),所以默认情况下,所有其他变量都声明为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)

  • 因为传递给myCriteriaargCount的变量没有相同的数据类型,所以会出现错误。

    解决问题的最佳方法(即使没有问题也要做的最好的事情)是声明所有变量。

    因此,将以下语句(至少)添加到cmdsearch1_Click子例程中:
    Dim mycriteria As String
    Dim argcount As Integer
    

    关于vba - 错误: Compile Error,ByRef argument type mismatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44039549/

    相关文章:

    excel - 在 Excel VBA 中获取工作表区域的大小

    java - Java 8 中删除了 JDBC-ODBC 桥,最好的替代方案是什么?

    ms-access - Visual Basic 6 数据结构

    ms-access:在数据库打开时执行某些操作

    c#-4.0 - 无法将 X 类型的对象转换为 Y

    关闭之前的 vba 工作簿跳过打开命令

    excel - 创建 Outlook 对象时未定义用户定义类型

    vba - 使用索引/项目编号循环遍历 Scripting.Dictionary

    C: const 还是 define?有什么区别,为什么第二个报告错误?

    java - 尝试延长类(class)时遇到麻烦