【问题标题】:What is wrong with this code? VBA这段代码有什么问题? VBA
【发布时间】:2018-09-09 06:53:03
【问题描述】:

无论条件是否为真,单元格的值始终为“错误”。我试过用 else 也没用。

Sub ejer_4()
    Cells(3, 1).Value = "hola"
    For i = 2 To 21:
        If Int(Cells(i, 3).Value) <> Int(Cells(i + 1, 3).Value) - 1 Then
            Cells(3, 1).Value = "Error"
        End If
    Next
End Sub

【问题讨论】:

  • 您只更改了一个单元格的值 (Cells(3, 1)),因此,如果条件为真至少一次,则单元格值将设置为“错误" 即使条件在其余 19 次中为假。
  • ^^ 您可能需要增加 Cell(3,1) 的 3 侧

标签: vba excel if-statement conditional-statements


【解决方案1】:

我认为这应该可以解决您的问题:

Sub ejer_4()
    For i = 2 To 21:
        If Int(Cells(i, 3).Value) <> Int(Cells(i + 1, 3).Value) - 1 Then
            Cells(i, 1).Value = "Error"
        Else
            Cells(i, 1).Value = "hola"
        End If
    Next
End Sub

您的问题是您循环遍历一系列单元格,但在检查条件后您写入一个单元格。因此,此单元格将仅包含上次检查的结果。以前的值将被简单地覆盖。

【讨论】:

  • 谢谢,但更改单元格 (3,1) 的值而不是 (i,1)。然而,它让我更接近解决这个问题
猜你喜欢
  • 2019-01-22
  • 2015-04-25
  • 2018-09-09
相关资源
最近更新 更多