vba传递参数类型错误
2015-01-21 15:37
344 查看
先来看看微软官方的说明:
概要
解决方案
详细信息
重现问题的步骤
<style>.tocTitle, #tocDiv{display: none;}</style>
类型不匹配: 数组或用户定义类型预期。
-或者-
编译错误:
类型不匹配: 数组或预期的用户定义类型
这些错误消息是不清楚。更准确的错误消息是如下:
类型不匹配: 不兼容的类型的数组
回到顶端
回到顶端
从插入菜单中,选择宏,然后选择模块。
在 Microsoft Excel 97 中,请按 ALT + F11 来激活 Visual Basic 编辑器中。然后,在插入菜单中单击模块。
在模块中键入以下过程:
从工具菜单中,选择宏。选择首先,名为的宏,然后选择运行。
在 Microsoft Excel 97 中,请单击工具菜单上的宏。首先,单击然后单击运行。
此时,您应该收到上述错误消息之一。
正确的语法是有兼容两个数组的数据类型。例如,键入下面的过程与上面的示例相同的模块工作表上。
注: 数据类型,两个数组是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()
请问这段程序哪儿错了?该怎么改?
解决方法:
提问者评价:原来是这样,感谢!
出处:http://zhidao.baidu.com/link?url=nF7Dig7c3aSIY5LbYoZ4oG-dGEUG1sHeWB3wS8rabMAmtAJHcH0L5r_o6nsJ-23Pv4LrMjxA9r_Ago0k6RLtxK
目录内容
概要
解决方案
详细信息
重现问题的步骤
<style>.tocTitle, #tocDiv{display: none;}</style>
概要
在 Excel 中,当过程的 Microsoft Visual Basic for Applications 将传递一个数组的值给另一个数组,如果两个数组的数据类型不兼容,您可能会收到以下错误消息之一:类型不匹配: 数组或用户定义类型预期。
-或者-
编译错误:
类型不匹配: 数组或预期的用户定义类型
这些错误消息是不清楚。更准确的错误消息是如下:
类型不匹配: 不兼容的类型的数组
回到顶端
解决方案
要确保两个数组的数据类型是兼容的具有相同的数据类型这两个数组的尺寸。回到顶端
更多信息
重现问题的步骤
在 Microsoft Excel 中创建一个新工作簿。从插入菜单中,选择宏,然后选择模块。
在 Microsoft Excel 97 中,请按 ALT + F11 来激活 Visual Basic 编辑器中。然后,在插入菜单中单击模块。
在模块中键入以下过程:
Sub First() Dim A(1 to 20) As Double Second A() End Sub Sub Second(B() As Single) End Sub
从工具菜单中,选择宏。选择首先,名为的宏,然后选择运行。
在 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
相关文章推荐
- JavaScript传参时类型错误Uncaught ReferenceError js传递的参数未定义
- 存储过程传递参数时出现类型转换错误!如:varchar转换为int时出错
- js传递参数时类型错误
- 【VBA研究】VBA自定义函数参数类型不符的错误
- 存储过程传递参数时出现类型转换错误!如:varchar转换为int时出错
- Java中String类型的参数传递问题的解析
- java中参数传递(基本类型,非基本类型;远程非远程)
- 函数传递类类型参数的几点疑问测试
- SQL Server 2005 : 存储过程传递字符串类型参数时,如何在参数中包含单引号
- 使用PreparedStatementSetter 设置参数跟 表字段类型不匹配出现的错误
- 关于ORACLE提示:"System.Data.OracleClient.OracleException: ORA-06550: 第 1 行, 第 7 列: \nPLS-00306: 调用 'xxxxxx' 时参数个数或类型错误\nORA-06550: 第 1 行, 第 7 列: \nPL/SQL: Statement ignored\n\r\n 的错误
- 通过值传递引用类型和通过引用传递引用类型参数的区别
- perl基础:传递hash类型参数
- 反射技术动态调用方法中的引用类型参数传递 (转)
- Java数据类型和参数传递
- [Remoting FAQ]传递Remoting参数时遇到的两种常见错误
- C#(也适用其他)的初学者对string是值类型还是引用类型搞不清楚,还有对参数传递也比较迷糊
- [Remoting FAQ]传递Remoting参数时遇到的两种常见错误
- VB调用DLL时传递自定义类型数组参数注意
- Java中String类型的参数传递问题的解析