2016-10-12 7 views
0

条件付き書式]ダイアログボックスから呼び出された場合に細胞がそれに応じて変更されるように、VBEで、次のコードは、trueを返す必要があります。条件付きでセルをフォーマットするにはbooleanを返す方法は?

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

私は値を持つセルに「いいえ」、何もこの条件設定を適用しない場合たまたま:

enter image description here

+4

おそらく関数宣言の後に 'As Boolean'を追加するべきでしょう。 –

+0

あなたは 'ActiveCell.Value'を' Application.Caller'に置き換えることができますが、絶対に必要がないときはVBAを使用しないでください:[また、ゼロに評価されない数値またはエラーは真とみなされます – Slai

答えて

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は必要ありません。

+2

また、関数シグネチャで明示的な戻り値型を宣言しても、 'Public Function SshProblem(rng As Range)As Boolean';その方法では 'Variant/Empty'の代わりに' False'を返し、Excelは復帰後に* that *をブール値に変換します。私は関数が余分だと主張したいと思いますが、VBAコードは単純なExcel式では行えないことを何もしていません。 –

+0

@ Mat'sMug私は同じことを考えて、OPがこれを学習経験として使っていると仮定しました。あなたのステートメントをエコーするためのメモを追加してください。 –

+1

lol @ "無限の知恵" –

関連する問題