我有这个问题,
我有这一行Dim i, j, x, y, Labels As Integer
,当我想在循环中以下列方式使用标签变量时,我得到一个错误:Labels = CInt(DBRange.Rows(i).Item(10).Value)
,将DBRange视为一个数据库以10列10行为例的工作表。
那么为什么我会遇到#34;类型不匹配"如果变量 i 是整数,并且变量标签也是整数,并且如果我将单元格值转换为的整数,则会出错CINT 功能?
答案 0 :(得分:0)
@tomalak是正确的i
,j
,x
和y
是变体而不是整数。只有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可以准确地立即给出答案,错误的历史记录是找到解决方案的重要部分。