VBA类型不匹配错误(示例)|如何修复运行时错误13?
类型不匹配错误或我们也可以将其称为错误代码13,当我们为不属于其数据类型的变量赋值时发生,例如,如果我们为整数数据类型变量提供十进制或长整数值,当我们运行显示为错误代码13的代码时,会遇到此类型不匹配错误。
什么是VBA类型不匹配错误?
Excel中的VBA类型不匹配错误是“运行时错误”的一种,它是此类别中的13号错误。
要开始在VBA中学习以及对初学者来说,很难找到VBA代码引发的错误。请记住,VBA不会引发错误,而只是在编写代码时突出显示我们的错误。
我们通常声明变量,并为其分配数据类型。当我们为这些变量分配值时,我们需要记住它可以保存什么样的数据,如果分配的值与数据类型不同,我们将得到“运行时错误13:类型不匹配”。
如何修复VBA类型不匹配运行时错误13?
让我们看一些示例,以了解此VBA类型不匹配错误。
您可以在此处下载此VBA类型不匹配Excel模板– VBA类型不匹配Excel模板VBA类型不匹配–示例1
有关示例,请查看下面的VBA代码。
代码:
子Type_MisMatch_Example1()Dim k作为字节k =“ Hiii” MsgBox k结束子
我已将变量“ k”声明为Byte。
这意味着变量“ k”可以保存0到255之间的值。但是在下一行中,我将变量“ k”的值指定为“ Hiii”。
很明显,数据类型不能保存文本的值,因此出现类型不匹配错误。
VBA类型不匹配–示例2
现在再看一个使用不同数据类型的示例。看下面的代码。
代码:
子Type_MisMatch_Example2()昏暗x作为布尔值x = 4556 MsgBox x End Sub
我们已经将变量“ x”声明为布尔值。
布尔值是一种数据类型,可以保存TRUE或FALSE的值。
在上面的代码中,我们分配了一个值为4556的值,该值与TRUE或FALSE的数据类型值不同。
当我们运行这段代码时,您可能会想到类型不匹配的错误,但是请看一下运行这段代码时会发生什么。
您一定想知道为什么这不会导致类型不匹配错误的运行时错误13。
这样做的原因是excel将除零以外的所有数字都视为TRUE。零值将被视为FALSE。这就是为什么我们得到的结果为TRUE而不是错误。
现在看到我将为文本分配一个数值。
代码:
子Type_MisMatch_Example2()昏暗x作为布尔x =“ 4556a” MsgBox x结束子
这肯定会引发运行时错误13:类型不匹配。
VBA类型不匹配–示例#3
现在,请看下面的示例代码。
代码:
Sub Type_MisMatch_Example4()Dim x作为整数Dim y作为字符串x = 45 y =“ 2019 Jan” MsgBox x + y End Sub
变量“ x”是整数数据类型,“ y”是字符串数据类型。
X = 45且y = 2019年1月。
在消息框中,我添加了x + y。
但这不是完美的代码,因为我们无法在字符串文本中添加数字。我们将遇到运行时错误13。
VBA类型不匹配-示例#4
特殊情况
在某些情况下,excel会宽恕分配给变量数据类型的错误数据。例如,请看下面的代码。
代码:
子Type_MisMatch_Example3()昏暗x尽可能长昏暗y尽可能长x = 58.85 y =“ 85” MsgBox x&vbNewLine&y End Sub
两个声明的变量是“ x”和“ y”。
对于此变量,分配的数据类型为“长”。
长数据类型仅接受整数,而不接受十进制值。
因此,一般的理解是获得类型不匹配错误的运行时错误13。
但是,让我们看看运行此代码时会发生什么。
哇!!!我们得到的值分别为59和85。
这是因为VBA会将十进制值58.85转换为最接近的整数值,即使数字用双引号引起来,它也只能转换为整数值。