こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel VBA 選択した範囲の1行目に色を付けたい

VBA初心者です。
セルB4~F15に表が作成されています。
プロシージャを実行して、セルB5~F15にブルー。表1行目のセルB4とF4のみに赤の色を付けるというコードを記述したいのです。
以下のように記述しました。

Sub セルに色()
   Range("B4").Select
   ActiveCell.CurrentRegion.Select
   Selection.Interior.ColorIndex = 8
   Selection.Range(Cells(1, 1),Cells(1,5)).Interior.ColorIndex = 3
End Sub

Rangeでは連続シートになるため、Unionに変更してみましたが、
Unionはオブジェクトがサポートされていない旨のエラーが出ました。
どのように記述すればよいでしょうか?
どうぞよろしくお願いいたします。

投稿日時 - 2009-11-07 04:21:27

QNo.5427998

困ってます

質問者が選んだベストアンサー

以下の様にしてみて下さい。

Sub セルに色()
Range("B4").Select
ActiveCell.CurrentRegion.Select
Selection.Interior.ColorIndex = 8
Selection.Range(Cells(1, 1), Cells(1, ActiveCell.CurrentRegion.Columns.Count)).Interior.ColorIndex = 3
End Sub

もう少しシンプルな文にするには以下の様にします。

Sub セルに色2()
With Range("B4").CurrentRegion
.Offset(1).Resize(.Rows.Count - 1).Interior.ColorIndex = 8
.Resize(1).Interior.ColorIndex = 3
End With
End Sub

投稿日時 - 2009-11-07 07:37:24

お礼

早々に回答をいただきまして、ありがとうございます!
わかりやすい構文で初心者の私にも読み取ることができました。
シンプル文の方で書き換えてみます。

投稿日時 - 2009-11-08 23:22:58

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

コードは見やすく、理解しやすい方が
特に初心者はよいと思いますよ
後で変更がしやすいですし
次にコードを書くときに参考にしやすい
と私は思います。

Sub セルに色()
  With ActiveCell.CurrentRegion
    .Interior.ColorIndex = 8  '表全体を水色に
    .Rows(1).Interior.ColorIndex = xlNone  '表の1行目の色をなしに
    .Cells(1, 1).Interior.ColorIndex = 3  '表1行目左端を赤に
    .Cells(1, .Columns.Count).Interior.ColorIndex = 3  '表1行目右端を赤に
  End With
End Sub

セルB4が固定ならば
Sub セルに色()
Range("B4").Select  'この位置に追加してね
With ActiveCell.CurrentRegion

参考まで

投稿日時 - 2009-11-07 10:07:46

お礼

簡略でわかりやすく、かつコメント付きで書いていただきありがとうございました。
固定観念が強すぎて、columnsが思い浮かびませんでした。
早速試します!

投稿日時 - 2009-11-08 23:25:47

ANo.2

次のようにしてはどうでしょう。
Sub セルに色()
Range("B4,F4").Select
Selection.Interior.ColorIndex = 3
Range(Range("B5"), Range("F15")).Select
Selection.Interior.ColorIndex = 8
End Sub

投稿日時 - 2009-11-07 07:44:39

お礼

回答ありがとうございました。
すっきりとした構文でわかりやすいですね。
ただ、私の質問が言葉足らずだったのですが、データが増えることが予定されており、ブルーを付ける範囲が拡張する予定です。
よって、ActiveCell.CurrentRegion.Selectは活かしたいと思います。
Range("B4,F4").Select
Selection.Interior.ColorIndex = 3
部分、活用させていただきます。
質問が明確でなくてごめんなさい。

投稿日時 - 2009-11-08 23:30:59

あなたにオススメの質問