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