VBA溢出错误相同代码

时间:2018-06-22 18:06:21

标签: excel vba excel-vba

我有一个非常简单的问题。我写这段代码是为了寻找一个预先存在的日期,以便我可以替换它。这段代码运行完美,但是我创建了一个文件副本,以使用单独的数据集运行相同的代码,现在代码被挂在第四行,这给了我一个溢出错误。关于问题的根源是什么?

Dim i As Integer, ValueToFind As Integer, LRow As Integer
intValueToFind = Sheet8.Range("K6")
Sheet3.Activate
LRow = Range("I" & Rows.Count).End(xlUp).Row
For i = 1 To LRow
If Cells(i, 9).Value = intValueToFind Then
MsgBox ("Found value on row " & i)

1 个答案:

答案 0 :(得分:2)

看起来Range("I" & Rows.Count).End(xlUp).Row返回的值大于Integer可以容纳的值。

Integer是16位带符号整数数据类型,这意味着其最大正值为2^15-1 32,767。

一个工作表可以包含比这多很多很多倍的行。

请改用Long,一种32位带符号整数数据类型,最大正值为2,147,483,647,2^31-1

不用担心为每个整数分配32位-在现代计算机上,无论如何,事物都是针对Int32进行优化的;您几乎不需要使用16位整数类型。