如何在与列进行比较时创建循环

时间:2016-05-09 19:35:23

标签: excel vba excel-vba messagebox

我想验证如果列AP大于列X显示消息,但是我希望此消息只出现一次且仅一次。例如,如果单元格ap7大于x7而不是显示消息,则用户单击“确定”。然后,如果单元格ap8小于x8,我不希望再次出现上一次验证的消息。

Dim lstrw As Long
Dim i As Long

    With Sheets("Main")
        lstrw = .Range("AP" & Rows.Count).End(xlUp).Row
        For i = 2 To lstrw
            If .Cells(i, "AP").value > .Cells(i, "X").value Then
                MsgBox "Your Pieces Are Over Suggested", vbOKOnly
                Exit For
            End If
        Next i
    End With

2 个答案:

答案 0 :(得分:2)

这应该这样做:

Private Sub Worksheet_Calculate()

Dim lstrw As Long
Dim i As Long

With Sheets("Main")
    lstrw = .Range("AP" & Rows.Count).End(xlUp).Row
    For i = 2 To lstrw
        If .Cells(i, "AP").Value > .Cells(i, "X").Value Then
            MsgBox "Your Pieces Are Over Suggested", vbOKOnly
            Exit For
        End If
    Next i
End with 
End Sub

答案 1 :(得分:0)

无需VBA即可轻松完成此操作。在第三列(我将使用Z)中,将以下公式复制并粘贴到列中,将第一行的索引替换为1:

=AP1>X1

然后在附近的单元格中,

=COUNTIF($Z$1:$Z$N, FALSE)

其中N是最后一行的索引。然后,您可以检查该单元格的值是否大于0.