如何在与列进行比较时创build一个循环

我想validation,如果列AP大于列X显示一条消息,但是我想这个消息只出现一次,只有一次。 例如,如果单元格ap7比显示消息大于x7,则用户单击确定。 那么如果单元格ap8小于x8,我不希望以前的validation信息再次出现。

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)中,将以下公式向下复制并粘贴到列中,将第一行的索引replace为1:

 =AP1>X1 

然后在附近的一个小区里呢

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

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