-2

計算されたセル (数式が含まれるセル) への入力範囲が変更され、範囲の特定の基準を満たすときに、メッセージ ボックスを表示する Excel VBA を作成するのに助けが必要です。

たとえば、範囲「B2」には、「A2」の関数である計算されたセルが含まれており、入力「A2」の更新時に、再計算されたセル「B2」が 20% を超えた場合、次のようにユーザーに警告します。メッセージボックス。

4

3 に答える 3

1

アップデート

このコードは、入力セルが変更された場合にのみトリガーされます。これは、「Worksheet_Calulate」を使用するよりも優れています。

Private Sub Worksheet_Change(ByVal Target As Range)

Dim myRange As Range

myRange = Range("B1:B2") '-> assumes input cells are in B1:B2

If Intersect(myRange, Target) Then

    '-> assumes calculated cell in A1
    If Range("A1").Value > 0.2 Then MsgBox "Above 20%"

    '-> to loop through many cells, do this
    Dim cel As Range
    For Each cel In Range("A1:A10")

        If cel.Value > 0.2 Then MsgBox cel.Address & " Above 20%"
        Exit For

    Next

End If

End Sub
于 2012-09-14T15:46:51.513 に答える
1

編集:スコットは、この関数Intersectよりもうまくいく関数を思い出させましたInRange

Edit2: これにより、異なる範囲に対して異なるルールを設定できます。ユーザーによって変更されたセルが制御範囲内にある場合、その範囲の検証ルールが呼び出されます。それ以外の場合、関数は続行します。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Range1 As Range, Range2 As Range '...
    Set Range1 = Me.Range("A1:A9")
    Set Range2 = Me.Range("B1:B9")
    '...

    If Not intersect(Range1, Target) Is Nothing Then
        'Rule for Range1
        If Target.Value > 0.2 Then   'put your condition here
            MsgBox "You exceeded 20%"
        End If

    ElseIf intersect(Range2, Target) Is Nothing Then
        'Rule for Range2...
    'elseif more ranges...
         'More rules...
    End If

End Sub
于 2012-09-14T15:30:23.263 に答える
0

シート 1 の A1 セルの変更をチェックするワークブック シート変更イベントの使用例を次に示します。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
    'check to ensure we are working in the correct Sheet
    If ActiveWorkbook.ActiveSheet.Name = "Sheet1" Then
        'check to see how many cells have been targeted
        If Target.Cells.Count = 1 Then
            If Target.Cells.Address = "$A$1" Then
                'check to see what value has been entered into the cell
                If Target.Value = 20 Then
                    MsgBox "Alerting the user"
                End If
            End If
        End If
    End If
End Sub
于 2012-09-14T15:24:22.750 に答える