「選択範囲内に、塗りつぶしの色がついているセルはいくつあるか」を判定したくて、次のようなコードを書きました。
vba
1Sub SelectionIroCount() 2 Dim 選択数 As Long, i As Long, c As Long 3 選択数 = Selection.Count 4 For i = 1 To 選択数 5 If Not Selection(i).Interior.ColorIndex = xlNone Then c = c + 1 6 Next 7 MsgBox "全体" & 選択数 & vbLf & "色なし" & 選択数 - c & vbLf & "色つき" & c 8End Sub
上記のコードは、選択範囲が1つの長方形なら意図通りに動作しますが、離れた(飛び飛びの)複数個所を選択しているときに意図通りに動作しません。
例えば、「B2:G3」の範囲が黄色に塗りつぶされているとします。
この状態で、「B2:E6」と「G1:G3」という「離れた複数個所」を同時に選択している場合、
「全体19 色なし11 色つき8」という結果になってしまいます。
実際にはこの、選択範囲内には、塗りつぶされているセルは10個あるので、
意図通りに動作しているなら、「全体19 色なし9 色つき10」となるはずです。
どうすれば、「離れた複数個所」を同時に選択している場合でも、正しく塗りつぶしのあるセルをカウントできるようになるでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/10 07:59