如何返回布尔值以有条件地格式化单元格?

时间:2016-10-12 17:58:08

标签: excel vba excel-vba excel-formula

VBE中的以下代码应返回true,以便在从“条件格式”对话框中调用时,相应地修改单元格:

Function sshProblem()
   Dim portStatus As String
    portStatus = ActiveCell.Value
    If StrComp(portStatus, "No") = 0 Then
       sshProblem = True
    End If
End Function

如果我将此条件设置应用于值为“No”的单元格,则不会发生任何事情:

enter image description here

1 个答案:

答案 0 :(得分:3)

您需要将范围传递给函数,而不是使用活动单元格,因为每次更改选择时都会更改:

Function sshProblem(rng As Range) As Boolean
   Dim portStatus As String
    portStatus = rng.Value
    If StrComp(portStatus, "No") = 0 Then
       sshProblem = True
    End If
End Function

然后,您可以使用格式化范围内的左上角单元格来调用它。

因此,如果我格式化A1:A1000,则公式为:

=sshProblem(A1)

![enter image description here

但是,正如@Mat' sMug以他的无限智慧所说,这可以用一个简单的现有公式来完成:

=A1="No"

简单的事情不需要vba。