ByRef 参数类型不匹配
传递 ByRef(通过引用)的参数必须(默认情况下)具有过程中预期的准确数据类型。 此错误具有以下原因和解决方法:
您传递一个无法强制转换为所需类型的类型的参数。
例如,如果您尝试在需要 Long 时传递 Integer 变量,则会出现此错误。 如果您需要进行强制转换(即使它会导致信息丢失),则可以用其自己的一对圆括号将参数括起来以传递它。
例如,若要向需要 Integer 参数的过程传递 Variant 参数
MyVar
,则可以编写如下所示的调用:Dim MyVar MyVar = 3.1415 Call SomeSub((MyVar)) Sub SomeSub (MyNum As Integer) MyNum = MyNum + MyNum End Sub
将参数置于其自己的一对圆括号中会将其作为表达式进行强制计算。 在此计算过程中,数字的小数部分会进行舍入(不截断)以使其符合所需的参数类型。 计算的结果将置于一个临时位置,并且过程将接收对该临时位置的引用。 因此,原始
MyVar
保留其值。注意
[!注释] 如果您不为变量指定类型,则变量将接收默认类型 Variant 。 此情况并不总是很明显。 例如,下面的代码声明两个变量,第一个是
MyVar
,其类型为 Variant ,第二个是AnotherVar
,其类型则为 Integer 。Dim MyVar, AnotherVar As Integer
有关其他信息,选择有问题的项并按 F1(在 Windows 中)或 HELP(在 Macintosh 上)。
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。