为什么我会遇到"类型不匹配"错误?

时间:2016-05-28 18:21:34

标签: vba int

我有这个问题, 我有这一行Dim i, j, x, y, Labels As Integer,当我想在循环中以下列方式使用标签变量时,我得到一个错误:Labels = CInt(DBRange.Rows(i).Item(10).Value),将DBRange视为一个数据库以10列10行为例的工作表。 那么为什么我会遇到#34;类型不匹配"如果变量 i 是整数,并且变量标签也是整数,并且如果我将单元格值转换为的整数,则会出错CINT 功能?

1 个答案:

答案 0 :(得分:0)

@tomalak是正确的ijxy是变体而不是整数。只有Label是整数,变体的处理速度很慢,应该避免使用。

凭借现代计算能力和工作量,请考虑integer过时使用Long取代它: -

Integer可以保存介于-32768和32767之间的数字

Long可以保存-2147483648和2147483647之间的数字

如果DBRange.Rows(i).Item(10).Value包含一个超出整数范围的值,或者通过包含非数字字符(即空格)而作为非数字值,则会发生错误。如果following way inside a cycle正在构建超出整数范围的值,则会发生错误。

要确认,它不是接受导致错误的CInt()值的变量,而是CInt()导致错误的行为。

我的第一个调试步骤是完全声明你的变量: -     Dim i As Integer     Dim j As Integer     Dim x As Integer     Dim y As Integer     Dim Labels As Integer

第二个调试步骤是将它们全部转换为Long

最后使用F8,它会显示变量,并且SO可以准确地立即给出答案,错误的历史记录是找到解决方案的重要部分。