2011-09-12 27 views
0

ExcelでVBAで関数を作成し、異なるセルに基づいて範囲内の特定の色のセルの数を数えます。これは最初に関数を実行しても問題ありませんが、範囲内のセルの1つの色をカウントする色に変更する場合、値は更新されません。色を変更するたびに機能が継続的に更新されるように、どうすれば入手できますか?ワークブックの計算は自動に設定されます。Excelの値が更新されない

Function CountColor(rSumRange As Range) 

Dim rCell As Range 
Dim iCol As Integer 
Dim vResult 

iCol = Range("P1").Interior.ColorIndex 
For Each rCell In rSumRange 
    If rCell.Interior.ColorIndex = iCol Then 
     vResult = vResult + 1 
    End If 
    Next rCell 

CountColor = vResult 
End Function 
+0

あなたが意味するか - どのように私は、範囲の変更にいつでも任意のセルを実行するための機能を得るのですか? – diagonalbatman

+0

それはまさに私が意味するものでしょう! –

答えて

3

変更色はWorksheet_Change()をトリガしませんし、任意のApplication.Calculateをトリガしません。

ワークブックは、あまりにも多くの数式を持っていない場合は、このかさばる解決しようとすることができます

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    Application.Calculate 
End Sub 
+0

これは(現在)私が持っている唯一の調合ですが、20回使用されています。これをコードに追加しましたが、色を変更するたびに値がまだ更新されていません。 編集:これを無視してください - 私はかなり馬鹿です。 –

+0

それは動作しません:あなたは揮発性関数を作る必要があります。次に、色を変更するだけのときに関数が再計算されるようにするには、Maxの選択変更マクロも使用する必要があります。しかし、注意してください:これらの両方の操作は再計算を大幅に遅くします –

1

をそれはいくつかのパフォーマンスを犠牲にしてきますが、あなたは「Application.Volatile」を追加することができますワークシートに変更があるたびに再計算されるようにするコードの内部に配置します。

参考:http://msdn.microsoft.com/en-us/library/aa213653(v=office.11).aspx

+0

良い参照+1 – JMax

+0

これはワークシート内の何かを変更するたびにうまく機能しましたが、悲しいことに、色を変更してもWorksheet_Change()色を変えることができる方法はありますか? –

+0

ああ、あなたの権利はこの場合にはうまくいかないようです。私が考えることができる最も良いことは、あなたが本当にそれを自動計算したいと思うなら、=を代入して=を再計算するワークシート選択変更イベントを作成することです。 – aevanko

関連する問題