アプリ版:「スタンプのみでお礼する」機能のリリースについて

すみません。

ご存じの方、ご教授願います。

エクセル用マクロを作成しているのですが、
たとえば、

A1、A4、A9に目的の該当文”FFFF”があり、
行1、行4、行9のバックカラーを変更する場合、
どのようなマクロを作成すればよいのでしょうか?

なお、上記A1、A4、A9は毎回一定ではなく、該当セルの数がゼロの場合もあれば、10以上の場合もあります。(同じ列には存在しています。)

検索”FFFF”→SHIFT+スペースではセルの場所が特定されてしまうので、目的の文の場所がかわったあるいはないときにも背景色を変えてしまいます。

どうかよろしくお願いします。

A 回答 (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
    • good
    • 2
この回答へのお礼

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

お礼日時:2011/02/07 21:51

条件付き書式を使い,特にマクロなど使わずに設定できます。



手順:
列範囲を列選択する
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

といった具合で,セル範囲を舐めるように巡回せずに素早く結果を得られます。
    • good
    • 2
この回答へのお礼

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

お礼日時:2011/02/07 21:52

こんばんは!


こういうことですかね?

操作したい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
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/02/07 21:53

'>行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
で出来ると思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/02/07 21:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!