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转换为最接近的整数值,即使数字用双引号引起来,它也只能转换为整数值。