【发布时间】:2020-02-19 11:14:45
【问题描述】:
我想用 for 循环检查单元格中的文本值是否与下面单元格中的相同。
如果 Cell(1) 和 Cell(2) 中的值不匹配,我希望将 Cell(3) 中的值写入 Cell(4)。
我收到一个错误
“溢出(错误 6)”
Dim i As Integer
For i = 1 To Rows.Count
If Cells(2 + i,21) = Cells(3 + i,21) Then
i = i + 1
Else
a = Cells(3 + i, 1)
j = j + 1
Cells(228 + j, 3) = a
End If
Next i
End Sub
我有一个生产输出和一个从早上 6 点到 12 点的时间表,我想创建一个时间表,如下所示。
截图:
【问题讨论】:
-
您的
a变量未声明:Dim a as Range,也未设置:Set a = Cells(3+i,1)。还将i声明为Long,而不是Integer -
首先,将
For i = 1 to Rows.Count替换为more reliable lastrow statement。 -
不要使用
Integer变量(很容易导致溢出),改用Long。根据@Plution,还请使用更可靠的方法来检索最后一行。此外,我建议至少使用工作表引用并循环遍历数组(通过内存)而不是单元格。话虽如此。请您提供一些模型示例数据和预期结果吗? -
@Teamothy,我不认为
a变量是一个范围对象。相反,我认为 OP 正在尝试写Cells(228 + j, 3) = Cells(3 + i, 1) -
@JvdV 是的,我的错,他想要一个值而不是范围,采用你的方法会更容易。
标签: excel vba for-loop comparison