2016-07-18 5 views
1

私は、背景色を持つ列のすべてのセルを単純に数えようとしています。どの色でもどちらの色でも問題ありません。私が初めて公式を適用するときVBAを使用して背景色付きのすべてのセルをカウントするにはどうすればよいですか?

Function CountCcolor(range_data As Range) As Long 
    Dim datax As Range 
    For Each datax In range_data 
     If datax.Interior.ColorIndex <> xlNone Then 
      CountCcolor = CountCcolor + 1 
     End If 
    Next datax 
End Function 

これは良い作品:私はこのコードを使用してモジュールを使用しています。私はシートに記入を変更すると、もはや反応しません。ユーザーがセルを編集するたびに、どのようにこの機能を実行できますか?

+0

見て[ここ](http://stackoverflow.com/questions/409434/automatically-execute-an-excel-macro-on-a-cell-change)と[ここ](http:// stackoverflow .com/questions/15337008/excel-vba-run-macro-automatic-when-a-cell-is-changed) – lokusking

+0

こんにちは。私はそれを見ましたが、私はそれを働かせることはできません。私はその中にそのビットのコードを持つモジュールしか持っていません。ワークシートでは、このように呼びます= CountCcolor(B5:B18)はうまく動作します。しかし、もし私が新しい細胞を満たすなら、それは反応しません。申し訳ありませんが、私はVBAに新しいです。 –

答えて

0

あなたは、関連するWorksheet_Changeイベントには、次のコードを使用してブック全体をリフレッシュすることができます

Private Sub Worksheet_Change(ByVal Target As Range) 

Application.Calculation = xlCalculationManual 
Application.Calculation = xlCalculationAutomatic 

End Sub 
+0

あなたの答えのためにこんにちはありがとうございます。私がセルを埋めるとThsiイベントは呼び出されません。塗りつぶしを取り除いたときのみ。 –

0

セルを充填することによってトリガーされるイベントがありません。したがって、私は次のワークシートマクロをお勧めします。

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) 
    Sh.Calculate 
End Sub 

マクロに加えて。推論:範囲を埋めると、そのシート上の他のセルを(最終的に)選択します。この時点で、合計が再計算されます。 のように更新されていないため理想的ではなく、計算量が多いかもしれません。

関連する問題