Excel 当范围内的所有单元格都等于相同值时更改单元格的值

Excel 当范围内的所有单元格都等于相同值时更改单元格的值,excel,vba,Excel,Vba,我试图创建一个宏,仅当一个范围内的所有单元格都具有特定值时,才更改单个单元格的值。 我环顾四周,似乎我只能用一个基于变量的工作表更改宏来实现这一点。 基于此,我总结了以下内容: Sub Worksheet_Change() Dim VarItemName As Variant VarItemName = Range("Other_Checks!G85:G87") Dim Value As String Application.EnableEvents = False If Range("O

我试图创建一个宏,仅当一个范围内的所有单元格都具有特定值时,才更改单个单元格的值。 我环顾四周,似乎我只能用一个基于变量的工作表更改宏来实现这一点。 基于此,我总结了以下内容:

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)中的第一个单元格发生变化时(不管其他两个单元格的值如何),它似乎才起作用。
我做错了什么?

这对我来说可以使用
工作表\u 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
公式轻松实现。这可能是一个可以考虑的选项?

所以你想把单元格的值放进一个数组并检查它们吗?谢谢你的回复,非常感谢你的帮助。不幸的是,这对我根本不起作用。我已按照您的建议编辑了范围,但当范围符合我的要求时,目标单元格保持不变。还有什么我遗漏的吗?a)您是否将代码放入
工作表\u Change
事件中,即不是手动将其键入模块,而是将其放入
工作表
代码中?b) 您没有将
recalc
设置为手动?啊,那是我的问题。我把它放在一个模块里。我已经将其移动到工作表代码中,现在它可以完美地工作。非常感谢你。先生,你是个传奇人物!