- ベストアンサー
エクセルマクロVBA:該当セルの行の色を変更したい
すみません。 ご存じの方、ご教授願います。 エクセル用マクロを作成しているのですが、 たとえば、 A1、A4、A9に目的の該当文”FFFF”があり、 行1、行4、行9のバックカラーを変更する場合、 どのようなマクロを作成すればよいのでしょうか? なお、上記A1、A4、A9は毎回一定ではなく、該当セルの数がゼロの場合もあれば、10以上の場合もあります。(同じ列には存在しています。) 検索”FFFF”→SHIFT+スペースではセルの場所が特定されてしまうので、目的の文の場所がかわったあるいはないときにも背景色を変えてしまいます。 どうかよろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じで如何でしょう。 Sub Sample() Dim aCell As Range Application.ScreenUpdating = False Cells.Interior.ColorIndex = xlNone For Each aCell In Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)) If aCell.Value = "FFFF" Then aCell.EntireRow.Interior.ColorIndex = 6 Next aCell Application.ScreenUpdating = True End Sub
その他の回答 (3)
- keithin
- ベストアンサー率66% (5278/7941)
条件付き書式を使い,特にマクロなど使わずに設定できます。 手順: 列範囲を列選択する 2003までのエクセルでは書式メニューから,2007以降ではホームタブで条件付き書式を開始する 2003までのエクセルでは セルの値が →数式が に変えて 2007以降では 数式を使用してセルの書式を設定 を選んで =$F1="FFFF" と条件の数式設定し,希望の書式を取り付けてOKする。 どうしてもマクロでやりたいならたとえば sub macro1() range("A1:J100").interior.colorindex = xlnone if application.countif(range("F:F"), "FFFF") = 0 then exit sub application.screenupdating = false range("F1:F100").autofilter field:=1, criteria1:="FFFF" range("A2:J100").interior.colorindex = 4 activesheet.autofiltermode = false application.screenupdating = true end sub といった具合で,セル範囲を舐めるように巡回せずに素早く結果を得られます。
お礼
はい、マクロが必要でした。 ありがとうございます。 役だたせていただきます。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! こういうことですかね? 操作したいSheet見出し上で右クリック → コードの表示 → VBE画面がでますので、 ↓のコードをコピー&ペーストしてデータを入力してみてください。 尚、セルの色は「赤」としていますが、COLORINDEX番号で好みの色に変更してみてください。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'この行から Dim i As Long Cells.Interior.ColorIndex = xlNone For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row If Cells(i, 1) = "FFFF" Then Rows(i).Interior.ColorIndex = 3 End If Next i End Sub 'この行まで 外していたらごめんなさいね。m(__)m
お礼
みなさんすごいですね。 ありがとうございます。
- mar00
- ベストアンサー率36% (158/430)
'>行1、行4、行9のバックカラーを変更する場合 '色の変えたい範囲が分からないので行全体にしてあります。 '色は6の所を好みの色に変更して下さい。 Sub Macro1() For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row If Range("A" & i) = "FFFF" Then Rows(i).Interior.ColorIndex = 6 End If Next i End Sub で出来ると思います。
お礼
おっしゃる通り行全体必要でした。 当方初心者ですが、わかりやくてシンプルなものをありがとうございました。 勉強の一助にします。
お礼
他にも応用が利いたのでベストアンサーにいたしました。 ありがとうございます。