• 締切済み

置換について

エクセルで、重要な語句に対して部分的に色付けされた文章が記載されたセルがあるとします。 そのセル内の文字列を、ctrl+FやReplace関数を使って置換をかけた場合、色付けした文字列がすべて黒に変わってしまいます。 置換対象文字列以外は、置換前の状態のまましたいのですが、どなたかその方法についてご存知の方いらっしゃらないでしょうか? ぜひ、ご教授願います。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 Wordのように、色を後から置換によって出来るとよいのですが。もしかしたら、ExcelのVersion によっては、出来るかもしれませんね。 今の段階では、重要な語句のみに色を付けるというマクロだったら、出来ます。 Visual Basic Editor 画面を出したら、挿入から、標準モジュールをクリックして、そこに以下のものを貼り付けます。一応、私の使う代表的な色番号を書いておきました。本当は、ユーザーフォームのテキストボックスに、設定の部分を入れられるとよいのですが、ちょっと難しいかもしれません。 例: その使い方はむずかしい。    ↓ その使い方は難しい。 難しいに、青の色をつけたい場合に、 設定のところの kensaku に 「むずかしい」 chikan に 「難しい」 といれ、 色番号を以下から、 iro = 5 と入れます。 もし、すでに色が黒になってしまったものは、 kensaku と chikan のところは、同じ言葉を入れてください。 '------------------------------------------------ '<標準モジュール> '黒(1),白(2),赤(3),黄緑(4),青(5),黄色(6),ピンク(7), '水色 (8), 茶(9), 緑(10), 藍(11), 黄土色(12), 紫(13), 濃緑(14) '灰色 (15), 濃い灰色(16),淡い水色(34),ゴールド(44),オレンジ(45), '黄緑 (35) Sub ReplaceColor()  Dim c As Range, myFadd As String  Dim i As Long '設定 '==============================================  '検索語  Const kensaku As String = "むずかしい"  '置換語  Const chikan As String = "難しい"  '色番号  Const Iro As Integer = 5 '==============================================  Set c = Cells.Find(What:=kensaku, _            After:=ActiveCell, _            LookIn:=xlFormulas, _            LookAt:=xlPart, _            SearchOrder:=xlByRows, _            SearchDirection:=xlNext, _            MatchCase:=False)  If Not c Is Nothing Then   myFadd = c.Address   Do    Set c = Cells.FindNext(c)        c.Replace What:=kensaku, _    Replacement:=chikan, _    LookAt:=xlPart, _    SearchOrder:=xlByRows, _    MatchCase:=False    i = InStr(c.Value, chikan)    c.Characters(i, Len(chikan)).Font.ColorIndex = Iro   Loop Until c Is Nothing Or myFadd = c.Address  End If End Sub '------------------------------------------------

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

事実が確認できませんでした。補足をお願いします。 A1セルに 「東京は秋が暑い」 といれ、全体文字ををライトブルーにしました。 「秋が」の2文字を赤色に変えました。 「秋が」を編集ー置換で「夏が」に置換しました。 「夏が」はライトブルーになり、セル全体もライトブルーのままでした。 こういうケースとどこが違うのでしょうか。もちろんプログラムでReplace関数を使っていません。

関連するQ&A

専門家に質問してみよう