10

セルの値が特定の値を超えた場合にポップアップ(vbOKOnly)を表示する簡単なマクロを作成しようとしています。

私は基本的に製品と割引のワークシートを持っています。1つのセルに数式があります(A1など)。これは、すべてのエントリの実効割引のパーセント(50%または.5)として割引を示します。

私が探しているのは、セルA1の値がたとえば50%を超えた場合にメッセージボックスを表示するコードです。これは、別のセルの入力によって割引が50%を超えたためです。

ありがとう!

4

3 に答える 3

18

次のVBAコードをシートに追加できます。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("A1") > 0.5 Then
        MsgBox "Discount too high"
    End If
End Sub

シート上でセルが変更されるたびに、セルA1の値がチェックされます。

ノート:

  • A1が他のスプレッドシートにあるデータにも依存している場合、そのデータを変更してもマクロは呼び出されません。
  • シート上で何かが変更されるたびに、マクロが呼び出されます。(1000年代のように)数式がたくさんある場合は、遅くなる可能性があります。

WidorWorksheet_Calculateは(の代わりに)別のアプローチを使用しますWorksheet_Change

  • 長所:A1の値が他のシートにあるセルにリンクされている場合、彼の方法は機能します。
  • 短所:他のシートを参照するリンクがシートに多数ある場合、彼のメソッドの実行速度は少し遅くなります。

結論Worksheet_ChangeA1が同じシートにあるデータのみに依存する場合は使用しWorksheet_Calculate、そうでない場合は使用します。

于 2012-04-04T14:42:50.310 に答える
2

Essentially you want to add code to the Calculate event of the relevant Worksheet.

In the Project window of the VBA editor, double-click the sheet you want to add code to and from the drop-downs at the top of the editor window, choose 'Worksheet' and 'Calculate' on the left and right respectively.

Alternatively, copy the code below into the editor of the sheet you want to use:

Private Sub Worksheet_Calculate()

If Sheets("MySheet").Range("A1").Value > 0.5 Then
    MsgBox "Over 50%!", vbOKOnly
End If

End Sub

This way, every time the worksheet recalculates it will check to see if the value is > 0.5 or 50%.

于 2012-04-04T14:45:15.587 に答える
1

セルの内容を確認するためにVBコードをループで実行する必要があるため、またはマクロを手動で実行する予定がない限り、メッセージボックスがこれに対応する最善の方法ではないと思います。この場合、値が上限を超えた場合は、セルに条件付き書式を追加して、背景を赤に変更する(たとえば)方がよいと思います。

于 2012-04-04T14:40:31.187 に答える