アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excel VBAで空白行があるセル範囲に色を付けるにはRangeとCellsを使用して記述すればできるでしょうか?
空白行がある表に色を付けるのに、下記のように記述すると、①のように設定されるのですが、
列、行のセル範囲に対して挿入や削除を行い実行すると②のように設定されてしまいます。
Sub test()
Range("B2", ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Interior.Color = RGB(204, 255, 255)
Selection.Range(Cells(1, 1), Cells(1, 3)).Interior.Color = RGB(204, 255, 153)
End Sub
列、行のセル範囲に対して挿入や削除を行っても、データがある範囲だけ処理対象にすることはできるでしょうか?
教えていただけたら幸いです。
宜しくお願い致します。

「Excel VBA 空白行があるセル範囲」の質問画像

A 回答 (3件)

こんにちは



>Excel VBAで空白行があるセル範囲に色を付けるには
>RangeとCellsを使用して記述すればできるでしょうか?
可能ですけれど、VBAなど使わなくても、エクセルの基本機能で実現できます。

なさりたいことがはっきりとはわかりませんが、以下と勝手に解釈しました。
『B:D列の表内で、1行(3セル)とも空白なら、その行に色を付けたい。』

例えば、ご提示の図の上の表でB3:D11を選択し、B3セルがアクティブな状態で、
1)「条件付き書式」-「新しいルール」-「数式を使用して~」を選択
2)下部の数式欄に
 =COUNTBLANK($B3:$D3)=3
 を入力して、書式(=色)を設定。

としておけば、いちいちマクロを実行したりしなくても、自動で書式(=色)が反映されます。


※ もしも、『一つでも空白セルがあれば~~』という条件の場合は、式を
 =COUNTBLANK($B3:$D3)
としておけば、そのようになります。

※ ただし、最終行の下に行を追加挿入しても、書式等はコピーされませんのでご注意。
    • good
    • 0
この回答へのお礼

ありがとございました。

お礼日時:2022/06/23 12:38

ええと。


 ActiveCell.SpecialCells(xlLastCell)
がそもそもの原因ですね。

範囲の右下セルを明示的に記述するようにしましょう。
やりかたはいろいろありますので、そこは自身で考え工夫してみてください。
原因が分からず質問をしているのでしょうから、質問者さんなら余裕でできると思います。
    • good
    • 1
この回答へのお礼

ありがとごさいました。

お礼日時:2022/06/23 12:38

こんにちは


ActiveCell.SpecialCells(xlLastCell) は
使用されている最終セルを示すものだったと記憶しています

もし、D列最終行に値が入っている事が確定的ならば
Range("B2", Cells(Rows.Count, "D").End(xlUp)).Select
にすれば良いと思います

D列が確定しないのであれば、範囲として取得できるもので
(例えば罫線が引かれた範囲とか・・)で選択可能です
ちなみに罫線の範囲取得は独自にファンクションなどを作成する必要があると思います(メソッドは無かったかと)

ちなみに .Selectを使わないでも処理コードを書けますが、後に
Selection.Rangeを使用していますので判り難くなるかもしれないので
添削コードは割愛します
    • good
    • 0
この回答へのお礼

ありがとございました。

お礼日時:2022/06/23 12:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています