- 締切済み
エクセルマクロで教えてください
マクロ初心者です。アドバイスをお願いします。以下のマクロですとB列の100行目までの塗りつぶしのセルのカウントは出来るのですが、シート上の全てをカウントしたいのです。1TO 100の100の部分をどう変更したら良いのか教えてください。 Sub セルの色数1() Dim I As Integer Dim Count As Integer Count = 0 For I = 1 To 100 If Cells(I, 2).Interior.ColorIndex <> xlNone Then Count = Count + 1 Next I Range("C1").Value = Count End Sub
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- hige_082
- ベストアンサー率50% (379/747)
>シート上の全てをカウントしたいのです。 やめた方が良いよ 16777216セル(excel2003まで)あるので、結構時間かかるよ '一応作ってみた Sub すべてのセル範囲の色数() Dim Rng As Range Dim Count As Long Count = 0 For Each Rng In Cells If Rng.Interior.ColorIndex <> xlNone Then Count = Count + 1 Next I Range("C1").Value = Count End Sub 'こっちの方が実用的だと思う Sub ラストセル範囲の色数() Dim Rng As Range Dim Count As Long Count = 0 For Each Rng In Range("A1", Cells.SpecialCells(xlCellTypeLastCell)) If Rng.Interior.ColorIndex <> xlNone Then Count = Count + 1 Next I Range("C1").Value = Count End Sub データの最後か編集したセルのどちらかの最終セルまでの範囲が処理対象になる
- kmetu
- ベストアンサー率41% (562/1346)
シー上のすべての行ですか For I = 1 To Rows.Count それともB列のデータのある最後の行? For I = 1 To Range("B" & Rows.Count).End(xlUp).Row それともすべてのセルを調べる? For Each mRange In Range(Cells(1, 1), Cells(Rows.Count, Columns.Count))