1

ボタンが2つあるシートがあります。1 つのボタンはセル (E2) に値を配置し、もう 1 つのボタンは、押すたびにその値 (E2) を 1 ずつカウントダウンします。セルの値が > 0 の場合は常に D2 が赤になり、=< 0 の場合は緑になるように、E2 セルの値で D2 の色を決定します。

ここに私の2つのボタンがあります:

ボタン 1

Sub Use2()
     Range("e2").Value = Range("d2")
End Sub

ボタン 2

Sub Subtract1()
     Range("E2").Value = Range("E2").Value - 1
End Sub

このコードを追加しました:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = Range("E2").Address and Target.Value >0 Then
      Range("D2").Interior.Color = vbRed
  End If
End Sub

E2 に 0 より大きい値を手動で入力した場合にのみ機能するため、緑色の部分には到達しませんでした。ボタン 1 を押して E2 の値が 0 より大きい値に変化すると機能しません。ありがとう!

4

2 に答える 2

1

Worksheet_Changeイベント利用時

1)Application.EnableEvents他のコードの実行中にイベントが発生するのを防ぐために使用します。

2) エラー処理を使用して、EnableEvents が True に設定されるようにします。

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False

    On Error Resume Next

    If Not Intersect(Range("E2"), Target) Is Nothing Then

        If Target.Value > 0 Then
            Range("D2").Interior.Color = vbRed
        Else
            Range("D2").Interior.Color = vbGreen
        End If
    End If

    Application.EnableEvents = True
End Sub

条件付き書式を使用して実現することもできます。

ここに画像の説明を入力

于 2013-05-20T01:18:06.023 に答える
0

イベント マクロの実行時のイベントの有効化/無効化に関する @Santosh のコメントに加えて、サブルーチンがすべてワークシート コード モジュールにあると仮定すると、次の_Changeようにイベントを強制的に呼び出すことができます。

Sub Use2()
    Range("E2").Value = Range("E2")
    Worksheet_Change Range("E2")
End Sub

Sub Subtract1()
    Range("E2").Value = Range("E2").Value - 1
    Worksheet_Change Range("E2")
End Sub
于 2013-05-20T01:39:31.430 に答える