Excelを使っている方から結構いただく質問で、これまであえて無視してきた質問があります。
アクティブセルのある行や列が目立つようにできないでしょうか?
カーソルのあるアクティブな行・列を目立たせる方法はありませんか?
という質問です。
巨大な表を作成していると、同じ行・列にあるデータか否かがわかりにくくなってしまうので、わかりやすくするためにアクティブセルのある行や列の色を変更したりできないかということです。
これを実現するには、VBA(Visual Basic for Applications)でイベントプロシージャをゴリゴリコーディングするしかないだろうなと思っていて、このサイトで取り上げられるのは随分先だろうなと考えていました。
それをたった1行のコードと、条件付き書式を組み合わせることで実装する方法が紹介されていました!
「アンドリューのエクセルTIPS」さんの「行の自動ハイライト」というエントリーです。
ハッキリ言ってすごいです!こんなシンプルな方法で実装してしまうとは。これぞExcel Hackと言っていいワザじゃないかと思います。
書式を設定したいセルを選択した状態で
メニュー[書式]−[条件付き書式]をクリック
↓
[条件付き書式の設定]ダイアログ−[条件1]欄の
1つ目のコンボボックスで[数式が]を選択
↓
コンボボックスの右のテキストボックスに
「=CELL("row")=ROW()」と入力
↓
[書式]ボタンをクリックして書式を設定
↓
[条件付き書式の設定]ダイアログ
−[条件1]欄
−[条件が真のときに使用する書式のプレビュー]
で書式が設定されたことを確認
↓
[条件付き書式の設定]ダイアログ−[OK]ボタンをクリック
CELL関数に引数「"row"」を指定すると行番号が返され、ROW関数は行番号を取得する関数で、この2つが等しいという条件で、条件付き書式を設定しています。
上記の方法を紹介している書籍も見かけたことがあるのですが、実はこれだけだとダメなんです。ただセルをクリックしてアクティブにしただけでは、上手く行の色が変更されないのです。
そこで安藤龍(アンドリュー)さんは以下ようなコードを追加したわけです。
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.ScreenUpdating = True
End Sub
上記のコードをVBE(Visual Basic Editor)のプロジェクトエクスプローラで、「ThisWorkbook」をダブルクリックして表示されるコードウィンドウに記述してください。
同じブック内のすべてのシートで、上記の条件付き書式を設定するのなら上記のとおりワークブックのイベントプロシージャでいいですし、ブック内のごく一部のシートで設定するのならワークシートのイベントプロシージャ(Worksheet_SelectionChange)でも同じ効果を得られます。
この「ScreenUpdating」というプロパティは、VBAで何かの処理をする際に画面の更新をいちいち行っていると処理速度の低下を招くので、それを防ぐために処理の開始前に
「Application.ScreenUpdating = False」
と記述するような使い方がよく知られています。
それとはまったく逆に、画面の更新を強制的に行わせるために
「Application.ScreenUpdating = True」
としているわけです。
列を目立たせるのであれば、条件付き書式の条件を
「=CELL("col")=COLUMN()」
としましょう。
行・列とも目立たせるのなら、条件1・条件2に別々に設定してもいいですし、OR関数を使って
「=OR(CELL("row")=ROW(), CELL("col")=COLUMN())」
としてもOKです。
- Newer:ネタ帳・ネタ帖・ネタ長・ネタ張−Googleサジェスト
- Older:誤って送信者を禁止してしまった
Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » アクティブセルのある行・列を目立たせる