2016-05-09 5 views
0

列APが列Xより大きい場合はメッセージを表示しますが、このメッセージは一度しか表示されないようにしたいと考えています。たとえば、セルap7がメッセージを表示するよりもx7より大きい場合、ユーザーはokをクリックします。次に、セル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 
+0

ループする必要があります。完全な列と他の完全な列を一度に比較することはできません。 –

+0

@ScottCranerどのようにそれを行うにはどのような提案? – Luis

+0

scottからの回答は素晴らしいですが、私は今、その行のために一度だけ表示することが可能であることを望んでいることを認識しました。 – Luis

答えて

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

そのワークブックのいくつかの揮発性関数を期待しましょう。 – Jeeped

+0

それはうまくいきましたが、If .Cells(i、 "AP")のデバッグを開始しました。値> .Cells(i、 "X")。値Then – Luis

+0

私は ' Luis –

0

あなたはVBAなしで簡単に行うことができます。 3列目の(IのZを使用します)、最初の行のインデックスと1を置き換え、カラムダウン次の数式をコピーして貼り付ける:

=AP1>X1 

そして近くのセルに、

=COUNTIF($Z$1:$Z$N, FALSE) 
を行います

ここで、Nは最後の行のインデックスです。そのセルの値が0より大きいかどうかを確認することができます。

+0

これはある程度機能しますが、私が尋ねたものと正確には一致しません。これはポップアップメッセージを表示せず、これもまだ計算されていないトリガーイベントにします。 – Luis

+0

あなたのプログラム内で、もしあればmsgboxを投げる。私はコード内の特定のポイントで値を必要としているだけであることを理解していますが、いつでもリフレッシュで正しい値を得ることができます。 –

関連する問題