• ベストアンサー

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はオブジェクトがサポートされていない旨のエラーが出ました。 どのように記述すればよいでしょうか? どうぞよろしくお願いいたします。

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

  • ベストアンサー
  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

以下の様にしてみて下さい。 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

akarukune
質問者

お礼

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

その他の回答 (2)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.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 参考まで

akarukune
質問者

お礼

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

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

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

akarukune
質問者

お礼

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

関連するQ&A

専門家に質問してみよう