2016-10-25 7 views
2

私が以下に書いている関数は、(フォントの色のための)条件付き書式設定と、色を比較するためのもう1つのセル範囲があります。関数は、1つのセル範囲と同じフォント色を持つビッグレンジ内のセル数を数えます。今VBAセルフファンクションは#VALUEを返します!関数ウィンドウで実際の値が正しく返されている間に、セルにエラーが発生しました。

Function CountColor(rng As Range, clr As Range) As Integer 

    Dim c As Range 
    Dim a As Integer 
    a = 0 

    For Each c In rng 
     If c.DisplayFormat.Font.Color = clr.Font.Color Then 
      a = a + 1 
     End If 
    Next 

    CountColor = a 

End Function 

、問題がされて - セル自体に、私は#VALUEを取得していながら、機能ウィンドウで、実際の結果は、正しく来ています!エラー。

+0

したがって、関数の結果をセルに代入しますか?これが何とか役立つかどうか確認してくださいhttps://support.office.com/en-us/article/How-to-correct-a-VALUE-error-15e1b616-fbf2-4147-9c0b-0a11a20e409e – codtex

+2

https://を参照してくださいmsdn.microsoft.com/en-us/library/office/ff838814(v=office.15).aspx: "DisplayFormatプロパティがユーザー定義関数で機能しないことに注意してください。" –

+0

'c.DisplayFormat.Font。 Color = clr.Font.Color Then ' になります ' c.Font.Color = clr.Font.Color Then' – Nulled

答えて

-1

コメントに複数の人が言及しています - DisplayFormatプロパティはユーザー定義関数では機能しません。したがって、関数から.DisplayFormat.を削除すると、期待どおりに機能するはずです。

Function CountColor(rng As Range, clr As Range) As Integer 

    Dim c As Range 
    Dim a As Integer 
    a = 0 

    For Each c In rng 
     If c.Font.Color = clr.Font.Color Then 
      a = a + 1 
     End If 
    Next 
    CountColor = a 
End Function 
+1

条件付き書式で満たされた条件で修正されたフォントでテストしましたか?条件付き書式設定で修正された色(フォントと背景)は認識されません。チップピアソンリンクを参照してください。http://www.cpearson.com/excel/cfcolors.htm –

0

次のコードは、条件付き書式で私のために働いたがない:私は単にそれが動作する条件付き書式は別にフォントの色を変更した場合

Option Explicit 

Function CountColor(rng As Range, clr As Variant) As Variant 
Dim c As Range 
Dim a As Integer 

a = 0 
For Each c In rng 
    If c.Font.color = clr.Font.color Then 
     a = a + 1 
    End If 
Next c 

CountColor = a 
End Function 

。しかし何らかの理由で、それ以外の場合は動作しません。

+0

ポイントは何ですか?これは、POが望むものであり、与えられた範囲内のいくつのセルが条件付き成立範囲内の特定の基準を満たしているかを見るためです。 –

+1

@ShaiRado私は単にそれが可能だとは思わないが、それはジョン・コールマンが指摘したように、依存細胞と関連しているかもしれません。 – Brian

関連する問題