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

目录内容

<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. Linux常用命令--文件(夹)查找之find命令

    Linux系统用得越久,就会发现这真的是一个很优秀的系统,各种方便各种实用各种高效率. 晚饭前写一下find命令的笔记. 其实这篇笔记,也是看到一篇外文博客,写得不错,自己拿来练一练,然后才顺便写篇笔 ...

  2. Spring容器创建过程

    Spring容器的refresh()   创建刷新 1  prepareRefresh() 刷新前的预处理 1) initProPertySources() 初始化一些属性设置: 子类定义个性化的属性 ...

  3. Activity启动的四种方式

    Activity启动方式有四种,分别是: standardsingleTopsingleTasksingleInstance 可以根据实际的需求为Activity设置对应的启动模式,从而可以避免创建大 ...

  4. CentOS 5 上使用yum同时安装32位和64位包的解决方法

    在centos上使用yum在线安装软件包的时候,有时候会同时安装32位和64位的包.并且在update的时候也会更新双份. 其实让yum只安装64位的包,只要在 /etc/yum.conf 中加个 e ...

  5. js 小复习2

    1.数组 findIndex()  indexOf() // findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引.否则返回-1. function isBigEnough(ele ...

  6. 智课雅思词汇---二十四、名词性后缀ary(也是形容词后缀)

    智课雅思词汇---二十四.名词性后缀ary(也是形容词后缀) 一.总结 一句话总结:很多词缀即是名词词缀也是形容词词缀,很多词即是名词也是形容词 1.名词性后缀-tude? 词根词缀:-tude [来 ...

  7. 装饰类——wpf

    decorator:在元素“周围”设置外边框.背景或者二者. adorner:在已存在的Visual  “之上”叠加Visual. AdornerDecorator:为可视化树中其下面的元素提供一个装 ...

  8. 7z压缩gopath的src的批处理

    7zGoPath.bat @echo off pushd "%~dp0" :config for /f "delims=" %%t in ('powershel ...

  9. 四十二 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mget和bulk批量操作

    注意:前面讲到的各种操作都是一次http请求操作一条数据,如果想要操作多条数据就会产生多次请求,所以就有了mget和bulk批量操作,mget和bulk批量操作是一次请求可以操作多条数据 1.mget ...

  10. 有云Ceph课堂:使用CivetWeb快速搭建RGW

    转自:https://www.ustack.com/blog/civetweb/ 优秀的开源项目正在改变传统IT,OpenStack名头最响,已经成为了IaaS的事实标准.Ceph同样颇有建树,通过其 ...