2

範囲内のすべてのセルが特定の値である場合にのみ、単一のセルの値を変更するマクロを作成しようとしています。私は周りを見回しましたが、これはバリアントに基づくワークシート変更マクロでのみ実行できるようです。これに基づいて、私は以下をまとめました:

Sub Worksheet_Change() 

Dim VarItemName As Variant
VarItemName = Range("Other_Checks!G85:G87")
Dim Value As String

Application.EnableEvents = False
If Range("Other_Checks!G85, Other_Checks!G86, Other_Checks!G87").Value = "N/A" Then
    Range("Other_Checks!G88").Value = "N/A"
Else
    Range("Other_Checks!G88").Value = "Pending"
    Application.EnableEvents = True
End If
End Sub

問題は、範囲(G85)の最初のセルが(他の2つのセルの値に関係なく)変更された場合にのみ機能するように見えることです。私は何が間違っているのですか?

4

1 に答える 1

1

Worksheet_Changeこれは、イベントを使用する私にとってはうまくいきます。

範囲参照を置き換える必要があります。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim VarItemName As Range, cl As Range

    If Not Intersect(Target, Range("A1:C1")) Is Nothing Then
        If Range("A1") = "n/a" And Range("B1") = "n/a" And Range("C1") = "n/a" Then
            Range("A2") = "n/a"
        Else
            Range("A2") = "Pending"
        End If
    End If
End Sub

ちなみに、これIFはスプレッドシートの数式を使用して簡単に行うことができます。検討するオプションかもしれませんか?

于 2013-02-27T19:42:19.993 に答える