• ベストアンサー

同じ文字列を探してフォントの色を付けるマクロ

行21のB列~K列までに文字列が入力されると、 C列のC1~C20の中から行21に入力された同じ文字列(完全一致)を探し出して、その文字列のフォントを赤くするマクロを教えてください。 *行21に入る文字列は毎回B~K列まで埋まるとは限りません。 宜しくお願いします。

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

  • ベストアンサー
  • spnlight
  • ベストアンサー率46% (15/32)
回答No.1

Sub torip() Dim BK, C As Variant Dim i, j As Long, myCnt As Long BK = Range("B21:K21").Value For i = 1 To 20 For j = 1 To 10 if Range("C" & i).Value = BK(1, j) Then Range("C" & i).Select Selection.Font.ColorIndex = 3 End If Next j Next i End Sub こんな感じ?

fightman11
質問者

お礼

早々に回答頂きありがとうございます。 思い通りに実行できました。

その他の回答 (1)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

>行21のB列~K列までに文字列が入力されると これが入力に対するイベントを指すのか、ひとしきり文字列を入力してからマクロを実行するのか不明確ですね。 A No.1の方同様、後者の解釈で別解を回答いたします。Excel VBAのヘルプのコードの小手直しです。(なかなか勉強になるコードです) Sub test() Dim targetRange As Range Dim myCell As Range Set targetRange = Worksheets(1).Range("b21:k21") For Each myCell In targetRange.Cells Call test2(myCell.Value) Next myCell End Sub Sub test2(targetString As String) Dim c As Range Dim firstAddress As String With Worksheets(1).Range("c2:c20") Set c = .Find(targetString, LookIn:=xlValues, LookAt:=xlWhole) If Not c Is Nothing Then firstAddress = c.Address Do c.Font.ColorIndex = 3 Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If End With End Sub

fightman11
質問者

お礼

回答ありがとうございました。 質問の内容が不明確で伝わり難かったですね、すみません。 行21への入力は毎回手動で行います。 教えて頂いたVBAでも思ったとおりに出来ました。

関連するQ&A