• ベストアンサー

VBA 行のセルに色をつける

例えば、A1が選択されたらA1~A30までをセルの色は赤、フォントは白に 例えば、B1が選択されたらA1~B30までをセルの色は赤、フォントは白に といった感じで、選択された列の1行目を選択した場合にセルや文字の色を変更することは可能でしょうか?

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.1です。 >縦ではなく、横の場合はどこを変えれば良いのでしょうか? >A1なら、1行目 >A2なら、2行目 最初の質問内容とは違っているような感じですが、 A列のどこかのセルを選択するとその行すべての塗りつぶしが「赤」・フォント色が「白」になるようにしています。 前回のコードは全て消去して↓のコードにしてみてください。(シートモジュールです) Private Sub Worksheet_SelectionChange(ByVal Target As Range) With Cells .Interior.ColorIndex = xlNone .Font.ColorIndex = xlAutomatic End With With Target If .Column = 1 And .Count = 1 Then .EntireRow.Interior.ColorIndex = 3 .EntireRow.Font.ColorIndex = 2 End If End With End Sub ※ 質問では >例えば、A1が選択されたらA1~A30までをセルの色は赤、フォントは白に >例えば、B1が選択されたらA1~B30までをセルの色は赤、フォントは白に となっていますので、30列まで限定の場合は↓のコードに変更してみてください。m(_ _)m Private Sub Worksheet_SelectionChange(ByVal Target As Range) With Cells .Interior.ColorIndex = xlNone .Font.ColorIndex = xlAutomatic End With With Target If .Column = 1 And .Count = 1 Then .Resize(, 30).Interior.ColorIndex = 3 .Resize(, 30).Font.ColorIndex = 2 End If End With End Sub

yuu1236
質問者

お礼

何度もありがとうございます。 自分の説明不足でした。すごく助かりましや。

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

ご利用のエクセルのバージョンが不明です 具体的にどこのセル範囲までそういう設定にしたいのか説明がありません 手順: A1から例えばJ30を(あるいは1行目から30行目までを)選択し、条件付き書式を開始する 新しいルールで数式を使用して…を選び(エクセル2003以前ではセルの値が → 数式がに変更し) =CELL("COL")=COLUMN() または =(CELL("ROW")=1)*(CELL("COL")=COLUMN()) と記入、書式ボタンでセルの塗色とフォントの色を設定 シート名タブを右クリックしてコードの表示を選択 現れたシートに下記のマクロをコピー貼り付ける private sub Worksheet_SelectionChange(byval Target as excel.range) application.screenupdating = true end sub ファイルメニューから終了してエクセルに戻り、セルを選択すると色が付く。 #この方法では無く、積極的にセルの色やフォントの色を塗り替えるマクロにしてしまうと、アナタが恣意的にセルの書式を変更していた状態を保全できないので注意します。

yuu1236
質問者

お礼

ご回答をありがとうございます。 2010です。配慮が足りませんでした。申し訳ありません。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! 一例です。 1行目以外を選択した場合は「塗りつぶし」はなし・「フォント色」は自動にしています。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim myRng As Range With Cells .Interior.ColorIndex = xlNone .Font.ColorIndex = xlAutomatic End With If Target.Row = 1 And Target.Count = 1 Then Set myRng = Range(Cells(1, "A"), Cells(30, Target.Column)) With myRng .Interior.ColorIndex = 3 .Font.ColorIndex = 2 End With End If End Sub こんな感じではどうでしょうか?m(_ _)m

yuu1236
質問者

お礼

ご回答をありがとうございます。 縦ではなく、横の場合はどこを変えれば良いのでしょうか? A1なら、1行目 A2なら、2行目 といった感じです。 何度も申し訳ありません。

関連するQ&A