1

这段代码有什么问题吗。我需要查看一列,如果该值小于参考值(它是一个计时器),则复制相邻的单元格并放入“A8”。

谢谢。

Sub GetData()

Dim i As Integer

For i = 4 To 31

If Cells(i, 38) < Cells(32, 5) Then
Cells(1, 8) = Cells(i, 39)
End If

Next i

End Sub
4

3 回答 3

6

或者,If statement在您现有的所有选项中添加此附加项if

 If IsError(Cells(i, 39)) = False And IsError(Cells(32, 5))= False Then
于 2013-04-19T15:21:13.487 回答
1

您可以在测试小于之前尝试测试单元格中的数值:

Sub GetData()

Dim i As Integer

For i = 4 To 31

  if isnumeric(cells(i,38)) then
    If Cells(i, 38) < Cells(32, 5) Then
        Cells(1, 8) = Cells(i, 39)
        ' Exit For ' UN-COMMENT to exit loop
    End If
  else
    msgbox "Cell '" & cells(i,38).address & "' may have an error",vbexclamation+vbokonly
  end if

Next

End Sub

顺便说一句,David 和 Kazjaw 的上述评论非常正确,循环的每次迭代你都可能会覆盖单元格 A8!

您可以在测试返回 true 后立即退出循环,如下所示:

Exit for

于 2013-04-19T15:12:44.907 回答
1

为避免不匹配,请尝试与单元格的文本进行比较:

If Cells(i,38).Text < Cells(32,5)...

于 2013-04-19T15:13:26.337 回答