• ベストアンサー

EXCEL VBAを使ってファイル内にある特定の文字すべてに色をつけたい

おはようございます。 EXCEL VBAであるひとつのEXCELファイルの中のすべてのシートの特定の文字が入っているセルに色をつけるにはどのようなコードを使えばいいでしょうか? (例)田中 という文字列が入っているセルはすべてブルーの色がつくという感じです。 教えて下さい。 よろしくお願いします。

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

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

以下でどうでしょうか? Sub macro() Dim C As Range, A As String, W As Worksheet For Each W In Worksheets Set C = W.Cells.Find(What:="田中", LookAt:=xlWhole) If Not C Is Nothing Then A = C.Address Do C.Interior.ColorIndex = 5 Set C = W.Cells.FindNext(C) Loop Until A = C.Address End If Next W End Sub

milomilo
質問者

お礼

ありがとうございます。ここまで教えていただけるとは思いませんでした。感謝致します。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.4

(1)マクロの記録ぐらいとって勉強せよ(>セルに色をつけるにはどのようなコードになるか (2)ブックのシートを順次捉えるコード Googleで 「or each worksheets」で照会 http://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200711/07110142.txt ほか多数 (3)シートの指定範囲のセルを順次捉えるコード ーー (2)+(3) Sub test01() Dim ws As Worksheet Dim cl As Range For Each ws In Worksheets MsgBox ws.Name For Each cl In ws.Range("A1:B2") MsgBox cl.Address Next Next End Sub をやってみて感じを掴む。 初心者はまず特定の文字と全セルの値を順次悉皆比較をやって見ること。 その後、ましな方法が無いかとなれば、Find,FindNextなど勉強のこと。 これも検索操作のマクロの記録で、ほぼわかるのだ。

  • end-u
  • ベストアンサー率79% (496/625)
回答No.3

もし『Excelのバージョンが2002以降のみ』であれば[置換]機能が使えます。 Sub test()   Const arg = "田中"   Dim ws As Worksheet   Application.ReplaceFormat.Interior.ColorIndex = 5   For Each ws In Worksheets     ws.UsedRange.Replace What:=arg, _                Replacement:=arg, _                LookAt:=xlPart, _                ReplaceFormat:=True   Next End Sub [置換]ウィンドウの[オプション]で書式の置換をする作業を[マクロの記録]すると参考になるでしょう。

  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.2

条件が少ない(Excel2003以前なら3個以下)なら条件付書式で同じようなことができます。 VBAでやるなら…… Sub Macro1()  Dim r As Range  For Each r In Cells   If (条件1) Then    (処理1)   ElseIf(条件2) Then    (処理2)   ElseIf ……   Else    (処理n)   End If  Next End Sub で、全てのセルに対して条件判断ができると思います。 特定の文字が入っているかはInStrあたりで調べられるでしょう。 非効率なので参考程度に。

関連するQ&A