与列比较时如何创建循环

How to create a loop when comparing to columns

我想要验证如果 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

应该这样做:

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

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

=AP1>X1

然后在附近的单元格中,执行

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

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