• ベストアンサー

エクセルマクロVBA:該当セルの行の色を変更したい

すみません。 ご存じの方、ご教授願います。 エクセル用マクロを作成しているのですが、 たとえば、 A1、A4、A9に目的の該当文”FFFF”があり、 行1、行4、行9のバックカラーを変更する場合、 どのようなマクロを作成すればよいのでしょうか? なお、上記A1、A4、A9は毎回一定ではなく、該当セルの数がゼロの場合もあれば、10以上の場合もあります。(同じ列には存在しています。) 検索”FFFF”→SHIFT+スペースではセルの場所が特定されてしまうので、目的の文の場所がかわったあるいはないときにも背景色を変えてしまいます。 どうかよろしくお願いします。

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

  • ベストアンサー
  • hananoppo
  • ベストアンサー率46% (109/235)
回答No.3

こんな感じで如何でしょう。 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

limitedd
質問者

お礼

他にも応用が利いたのでベストアンサーにいたしました。 ありがとうございます。

その他の回答 (3)

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

条件付き書式を使い,特にマクロなど使わずに設定できます。 手順: 列範囲を列選択する 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 といった具合で,セル範囲を舐めるように巡回せずに素早く結果を得られます。

limitedd
質問者

お礼

はい、マクロが必要でした。 ありがとうございます。 役だたせていただきます。

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

こんばんは! こういうことですかね? 操作したい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

limitedd
質問者

お礼

みなさんすごいですね。 ありがとうございます。

  • mar00
  • ベストアンサー率36% (158/430)
回答No.1

'>行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 で出来ると思います。

limitedd
質問者

お礼

おっしゃる通り行全体必要でした。 当方初心者ですが、わかりやくてシンプルなものをありがとうございました。 勉強の一助にします。

関連するQ&A

専門家に質問してみよう