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

目录内容

<style>.tocTitle, #tocDiv{display: none;}</style>

概要

在 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

vba传递参数类型错误的更多相关文章

  1. python限定方法参数类型、返回值类型、变量类型等

    typing模块的作用 自python3.5开始,PEP484为python引入了类型注解(type hints) 类型检查,防止运行时出现参数和返回值类型.变量类型不符合. 作为开发文档附加说明,方 ...

  2. spring参数类型异常输出(二), SpringMvc参数类型转换错误输出(二)

    spring参数类型异常输出(二), SpringMvc参数类型转换错误输出(二) >>>>>>>>>>>>>>&g ...

  3. spring参数类型异常输出,SpringMvc参数类型转换错误输出

    spring参数类型异常输出, SpringMvc参数类型转换错误输出 >>>>>>>>>>>>>>>> ...

  4. c#基础语言编程-按值类型和引用类型传递参数

    引言 在介绍传递参数介绍前,请明白参数类型和传递方式是不同的.传递方式分为按值类型和引用类型传递参数.参数类型有值类型和引用类型,这个和C++是不同的.这里的传递方式对应c++中的深复制和浅复制. 两 ...

  5. PLS-00306: 调用 'SYNCRN' 时参数个数或类型错误

    System.Data.OracleClient.OracleException (0x80131938): ORA-00604: 递归 SQL 级别 1 出现错误 ORA-06550: 第 1 行, ...

  6. 复用$.ajax方式传递参数错误处理

    1.封装后的方法,在 data:inData 传递参数的方式和一般不一样,如果不注意会出现错误. function getDataByJsonP(methName, inData, fn) { $.a ...

  7. 记一次WinForm程序中主进程打开子进程并传递参数的操作过程(进程间传递参数)

    目标:想在WinForm程序之间传递参数.以便子进程作出相应的处理. 一种错误的方法 父进程的主程序: ProcessStartInfo psi = new ProcessStartInfo(); p ...

  8. mybatis 传递参数的方法总结

    有三种mybatis传递参数的方式: 第一种 mybatis传入参数是有序号的,可以直接用序号取得参数 User selectUser(String name,String area); 可以在xml ...

  9. Qt 信号槽如何传递参数(或带参数的信号槽)

                                    信号槽如何传递参数(或带参数的信号槽) 利用Qt进行程序开发时,有时需要信号槽来完成参数传递.带参数的信号槽在使用时,有几点需要注意的地 ...

随机推荐

  1. 解析JDK动态代理实现原理

    JDK动态代理使用实例 代理模式的类图如上.关于静态代理的示例网上有很多,在这里就不讲了. 因为本篇讲述要点是JDK动态代理的实现原理,直接从JDK动态代理实例开始. 首先是Subject接口类. p ...

  2. 混合开发的大趋势之一React Native之Image (脑动理解)

    文章是宝宝自己写的,你可以转走,标明哪来的就行王亟亟的大牛之路 国庆这些天要么旅游要么WOW,感觉整个人都废了.. 直接从黄种人晒成了非洲大酋长..然而还是无橙,这礼拜要做7天,昨天把单元测试的东西整 ...

  3. PHP练习题二

    1.抓取远程图片到本地,你会用什么函数? fsockopen, A 2.用最少的代码写一个求3值最大值的函数. function($a,$b,$c){* W0 z* u6 k+ e. L  a: }5 ...

  4. spark集群安装

    cd到conf中去 修改名字   mv spark-env.sh.template spark-env.sh 并且修改内容 添加: export JAVA_HOME=/root/java/jdk1.8 ...

  5. DNS解析过程和DNS挟持

    1.DNS解析过程详解 1).在浏览器中输入一个域名,例如www.tmall.com,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析, ...

  6. 第三篇:Spark SQL Catalyst源码分析之Analyzer

    /** Spark SQL源码分析系列文章*/ 前面几篇文章讲解了Spark SQL的核心执行流程和Spark SQL的Catalyst框架的Sql Parser是怎样接受用户输入sql,经过解析生成 ...

  7. Eclipse_下载地址

    1. http://www.eclipse.org/downloads/ http://www.eclipse.org/downloads/packages/ http://archive.eclip ...

  8. 全方位解读Java反射(reflection)

    JAVA提供了一种反射机制,反射也称为反省. java程序运行以后内存中就是一堆对象,除了对象什么都没有. 找对象 拉关系 瞎折腾 对象在运行过程中能否有一种机制查看自身的状态,属性和行为.这就是反射 ...

  9. web自动化中的page object模式

    一. 原理 将页面的元素定位和元素行为封装成一个page类,实现页面对象和测试用例分离 类的属性:元素定位 类的行为:元素的操作 测试用例:调用所需页面对象中的行为,组成测试用例 二. 好处 1. 当 ...

  10. python基础之迭代器协议和生成器(二)

    一.什么是迭代器: 迭代是Python最强大的功能之一,是访问集合元素的一种方式. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束. 迭代器是一个可以记住遍历的位置的对象. 迭代器的 ...