• 締切済み

セル内の一部の色と文字列の置換

みなさんこんにちは。 質問ですが、置換したあと、置換した文字のみ青色に変えたいと思っています。 さらにその際に、変換対象外の文字に色の設定がされていた場合には、その色の設定はそのままにしておきたいのです。 たとえば、シート内に ABC123ABCあいう (但し、123だけは、フォントが赤色、他は黒色)というセルがあった場合、 ABC⇒EFG に置換すると、 EFG123EFGあいう (EFGは、青色、123は、フォントが赤色のまま)としたいです。 以上、よろしくお願いします。

みんなの回答

  • aipkt
  • ベストアンサー率0% (0/0)
回答No.5

初めましてー! VB暦2週間の素人ですが、勉強ついでに作ったので解決してなければ回答・・・。 とりあえずセルを移動させずにA1だけ対応させますのでセルの移動などはお願いします。 (複数のセルを置換する場合に処理速度がかなりかかり、無駄が多いと思いますが・・・) ※A1にABC123ABCあいう と入力し、123を赤にしておいてください。 '------------------------------------------------------------- Sub 置換() Dim a, b As Long Dim FontSave(500, 1) As String Range("A1").Activate For a = 1 To Len(ActiveCell) jamp: If Asc(Mid(ActiveCell, a, Len("ABC"))) = Asc("ABC") Then With ActiveCell.Characters(Start:=a, Length:=1).Font For b = 1 To Len("ABC") FontSave(a, 1) = 5 a = a + 1 Next GoTo jamp: End With Else With ActiveCell.Characters(Start:=a, Length:=1).Font If .ColorIndex > 1 Then FontSave(a, 1) = .ColorIndex Else FontSave(a, 1) = 1 End If End With End If Next ActiveCell.Replace What:="ABC", Replacement:="EFG", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False For a = 1 To Len(ActiveCell) With ActiveCell.Characters(Start:=a, Length:=1).Font .ColorIndex = FontSave(a, 1) End With Next End Sub '------------------------------------------------------------ 処理の流れとしては (1) フォントを指定して一旦保存しておく (2) 置換 (3) 保存しておいたフォントの書き込み 置換する文字列が置換前の文字列より多いor少ない場合はちょっとひねらないといけないので・・・。 もし必要で分からなければコメント下さい。 頑張って下さい。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.4

お初です 禁止事項よく読んでくださいね 質問が曖昧なので、こんな回答しか出来ません >ただ、VBAで行いたいです。(EXCEL2000) 質問に書いておくべきですね Sub Macro2() ' ' Macro2 Macro ' マクロ記録日 : 2009/1/8 ユーザー名 : ' ' Cells.Replace What:="abc", Replacement:="efg" With ActiveCell.Characters(Start:=1, Length:=3).Font .ColorIndex = 5 End With With ActiveCell.Characters(Start:=4, Length:=3).Font .ColorIndex = 3 End With With ActiveCell.Characters(Start:=7, Length:=3).Font .ColorIndex = 5 End With With ActiveCell.Characters(Start:=10, Length:=3).Font .ColorIndex = xlAutomatic End With End Sub 質問の操作をマクロの記録で記録し、必要なコード以外削除しました 後はご自分で

  • gyouda1114
  • ベストアンサー率37% (499/1320)
回答No.3

(21) 文字列を検索し、その文字だけに書式を設定する http://www.excel7.com/personal/personal1-4.htm

  • dehehe
  • ベストアンサー率27% (6/22)
回答No.2

置換操作自体をVBAでプログラム化し、ボタンか関数化すれば、フォントや文字色の操作はかなり高い自由度で可能と思います。 数値計算でVBAを使うことがありますが、このような見た目を操作するものはコーディングしたことが無いので何となくですが。

  • A88No8
  • ベストアンサー率52% (836/1606)
回答No.1

Excel 2003 なら置換の書式オプションを指定すれば出きると思います。 Excel 97 には、書式を置き換える機能がありません(;_^)

JARO08
質問者

お礼

ご回答ありがとうございます。 ただ、VBAで行いたいです。(EXCEL2000) 置換したい文字が多くあるので。