zoukankan      html  css  js  c++  java
  • vba传递参数类型错误

    先来看看微软官方的说明:

    目录内容

    概要

    在 Excel 中,当过程的 Microsoft Visual Basic for Applications 将传递一个数组的值给另一个数组,如果两个数组的数据类型不兼容,您可能会收到以下错误消息之一:
    类型不匹配: 数组或用户定义类型预期。
    -或者-
    编译错误:
    类型不匹配: 数组或预期的用户定义类型
    这些错误消息是不清楚。更准确的错误消息是如下:
    类型不匹配: 不兼容的类型的数组

    解决方案

    要确保两个数组的数据类型是兼容的具有相同的数据类型这两个数组的尺寸。

    更多信息

    重现问题的步骤

    1. 在 Microsoft Excel 中创建一个新工作簿。
    2. 从插入菜单中,选择宏,然后选择模块。

      在 Microsoft Excel 97 中,请按 ALT + F11 来激活 Visual Basic 编辑器中。然后,在插入菜单中单击模块。
    3. 在模块中键入以下过程:
            Sub First()
               Dim A(1 to 20) As Double
               Second A()
            End Sub
      
            Sub Second(B() As Single)
            End Sub
      						
    4. 从工具菜单中,选择宏。选择首先,名为的宏,然后选择运行。

      在 Microsoft Excel 97 中,请单击工具菜单上的宏。首先,单击然后单击运行。

      此时,您应该收到上述错误消息之一。
    正确的语法是有兼容两个数组的数据类型。例如,键入下面的过程与上面的示例相同的模块工作表上。

        Sub Correct()
           Dim A(1 to 20) As Double
           Example A()
        End Sub
    
        Sub Example(B() As Double)
        End Sub
    				
    注: 数据类型,两个数组是Double.

    出处:http://support.microsoft.com/kb/121114/

    =============================================================

    下面再看看网上其他人的解释,及解决方法

    '简单的测试程序
    Private Sub Form_Load()
        Dim ii As Integer
        Dim ba(), bb() As Byte
        ReDim ba(9)
        ReDim bb(9)
        For ii = 0 To 9
    ba(ii) = 3 * ii + 2
        Next
        Call ttsub(ba(), bb())
    End Sub

    Private Sub ttsub(a() As Byte, b() As Byte)
        Dim aa As Byte
        For aa = 0 To 9
            b(aa) = a(aa) + 1
        Next
    End Sub

    调试时提示下述错误:
    compile error:
    type mismatch: array or user-defined type expected

    错误指向Call ttsub(ba(), bb())一句中的ba()
    请问这段程序哪儿错了?该怎么改?

    解决方法:

    Dim ba(), bb() As Byte
    这个是错误的.要写就写全,因为vb默认是变体Variant类型的.
    所以千万不能马虎,得写Dim ba() As Byte, bb() As Byte
    提问者评价:原来是这样,感谢!

    出处:http://zhidao.baidu.com/link?url=nF7Dig7c3aSIY5LbYoZ4oG-dGEUG1sHeWB3wS8rabMAmtAJHcH0L5r_o6nsJ-23Pv4LrMjxA9r_Ago0k6RLtxK

  • 相关阅读:
    PHP 统计数据功能 有感
    一个高效的工作方式
    Navicat for mysql 导出sql文件 导入sql文件
    chrome浏览器,调试详解,调试js、调试php、调试ajax
    网络编程中几个地址结构与转换(in_addr,sockaddr,sockaddr_in,pcap_addr)
    TCP 协议
    tcp抓包 Wireshark 使用
    (转)linux中常用的头文件
    ubuntu安装使用kdevelop
    安卓u8800刷机
  • 原文地址:https://www.cnblogs.com/mq0036/p/4239040.html
Copyright © 2011-2022 走看看