Excelシートの文字置換における文字色変更方法と注意点

このQ&Aのポイント
  • Excelのマクロを使用して、シート間で文字置換を行う方法についての質問です。
  • 置換したい文字を検出し、他のシートで同じ文字を置換するマクロを作成しています。
  • 置換後の文字の書式を変更する方法や、特定の文字の書式だけを変更する方法について教えてください。
回答を見る
  • ベストアンサー

置換した文字色の変更

シートが2枚あって、sheet(1)の内容を変更するとsheet(2)の内容を検索して置換するマクロを作っています。 sheet(1)で変更された文字を検出して(検出は文字色で判断しています。)sheet(2)にある文字を置換した後。文字色を変更しようとしています。 Sheet(2)の文字は例えばこのように並んでいます。 各文字はsheet(1)のA,B列の内容を合せたものやユーザーが任意に入れた文字を含みます。 A1 上側 右側 A2 下側 左側 A3 両側 A1:A3を選択して、A1の「上側」を「上面」に置換した後、文字色変更したいのです。 ユーザーの入力値が含まれるため、書式や文字列のコピペは出来ません。 なお、文字数は一定では有りません。また、この範囲の検索が終了すると次ぎの範囲を選択し同様の処理を行っています。 現在使っているのはマクロの記録を行ったものを使っています。 a="上側" b = "上面" Selection.Find(What:=a・・・・・・) ActiveCell.Replace What:=a, Replacement:=b, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False この中でReplaceFormatで書式設定を行っているのは判るのですが、ここをどの様にするば希望の文字色(例えば赤)にする事が出来るのでしょうか? また、その方法だとA1セル全ての書式が変わってしまいます。欲を言えば置換後の”上面”だけを変更したいのですがそれは可能でしょうか。 宜しくお願い致します。

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

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

質問がよく分からん 結局、置換後の文字列に色を付けたいだけ? 置換までは出来るんだよね じゃあ、文字列の色変更のみ Sub Macro1() Dim a As String Dim i As Integer, ii As Integer b = "上面" i = InStr([A1], b) ii = Len(b) [A1].Characters(Start:=i, Length:=ii).Font.ColorIndex = 3 End Sub A1 上面 右側 上面の色を赤色にする アレンジは自分でしてね

ae-1sp
質問者

お礼

分かりにくい説明にもかかわらずご回答頂きありがとうございます。 仰る通り置換後の文字列に色を付けたかったのです。 なるほどLen関数で文字数をカウントしてやる訳ですね。 おかげ様で解決できました。 実はこれ以外にも罫線の引き方で悩んでいましたが、これの方法を使って解決する事が出来ました。 大変ありがとうございました。

関連するQ&A

  • エクセルで指定した文字に自動で置換することは可能ですか??

    A1セルに「バナナ」と表示されると下のマクロの記録で作った”置換するマクロ”の「りんご」の部分を「バナナ」に変更し、さらにこの置換マクロを自動実行することはできますか?? Sub Macro1()' Cells.Select Selection.Replace What:="名前(1)", Replacement:="りんご", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Range("A1").Select End Sub このマクロの記録でなくてもいいんですが、あるセルに置換したい文字が表示された時点でシート内の置換が実行されるようにしたいんですけど・・・・・。 よろしくお願いします。

  • エクセル2003で特殊文字の置換方法

    エクセル2003、XPを使用しています。 エクセルのマクロで置換をしているのですが、 置換対象がCHAR(160)です。 セル上に上のを打ち込むと、実際は違いますが半角スペースに見えます。 特殊文字であっているのでしょうか。 それで、この文字を消したいと思い、以下の通りマクロで記述しているのですが、成功しません おわかりになる方いらしたらよろしくお願いします。 Cells.Replace What:=Chr(160), Replacement:="", LookAt:=xlPart, SearchOrder:= _ xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

  • Excelで置換した文字に色をつけたい

    よろしくお願いします Excelで、「対象シート」のB列を参照して、 「置換リスト」シートの一覧のC列の文字列をE列の文字列に置換するようにしています。 「対象シート」のA列には置換前のデータも入っているので、 「対象シート」のA列、B列それぞれの置換前、置換後の文字列に色をつけたいと思っています。 どの文字がどの文字に置換されたかを比較するためです。 置換後のB列のみ下記式で色をつけられたのですが、 該当文字が含まれる、セル内全部の文字の色が変わってしまいました。 該当文字だけの色を変えるにはどうすればよいでしょうか。 また、「置換リスト」シートのC列にある場は「対象シート」のA列の該当文字のみを赤くする方法も教えていただけないでしょうか。 Sub list置換_Click() Dim list_sheet As Worksheet Dim chg_sheet As Worksheet 'こっちは置換する元の文字と置換文字のリスト Set list_sheet = Worksheets("置換リスト") 'こっちは一括置換したい対象のシート Set chg_sheet = Worksheets("対象シート") cnt = list_sheet.Range("c4").CurrentRegion.Rows.Count For i = 4 To cnt srcword = list_sheet.Cells(i, "C").Value repword = list_sheet.Cells(i, "E").Value With Application.ReplaceFormat.Font .Subscript = False .Color = 255 .TintAndShade = 0 End With Columns("B:B").Replace What:=srcword, Replacement:=repword, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=True Next i End Sub よろしくお願いいたします。

  • Excelマクロ 置換について教えてください。

    A列の,10を,15に置換したいので下記マクロを記録しました。 ほかに,10を,16などにしたい場合もあるため、 入力画面を表示して初期値は,10から,15ですが、ほかを入力した場合は他の値で置換するマクロを教えてください。 Sub Macro1() Columns("A:A").Select Selection.Replace What:=",10", Replacement:=",15", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub

  • 置換(検索場所に「ブック」を指定した)

    vbaでわからないので教えてください。 手作業なら可能ですが 何回も行なうのでマクロを組みたいのですが Sub 置換() Cells.Replace What:="スッキリ", Replacement:="すっきり", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub のコードのどこに「検索場所」が書かれているのでしょか? 前回、シート単位で置換した後、上記のコードを実行すると、 またシート単位での置換になってしまいます。 検索場所を「ブック」にするコードを教えてください!ご教授よろしくお願い致します。

  • excelのvbaを使って日付を置換したいのです

    こんにちは。いつも質問ばかりですみません。 今、excell の VBAの勉強をしているのですが、たとえば、B列に2004/5/3 とか、2004/5/5とか、5月の日付ばかりはいっていたとして、その2004/5の部分を2004/6に置換したいとします。 それを、マクロでやらせてみて、VBAを見ると Sub Macro9() Cells.Replace What:="2004/5", Replacement:="2004/6", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub のようになるのですが、このプロシージャーを実行しても、うまく置換できません。 どのように記述したら、できるのか、教えていただけるとうれしいです。 よろしくお願いいたします。

  • データの置換 エクセルの操作とVBAマクロ…???

    A列に 17:00 と表示されているセルを 16:45 に 置換したいです。 普通にエクセルの操作(編集からダイアログボックスを表示して)行うと普通に実行されるのですが、その操作を記録したマクロを実行しても何も起こらないのです。(エラーも出ません) VBAには↓のとおり記録されました。 Columns("A:A").Select Selection.Replace What:="17:00", Replacement:="16:45", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False 実は、17:00 と表示されているセルに入力されているデータは、17:00:00 であり、ユーザー定義の書式設定で h:mm の形式で表示されています。 元データの書式設定を 17:00:00 (時刻)に変えてもやはり同様で、エクセル操作ではうまくいきますがマクロだと何も起こりません。 試しに元データの書式設定を標準(シリアル値)に変えてやってみるとマクロでも置換されましたが、実際の業務では大変不便そうです。 マクロを実行する時にはユーザー定義や時刻の書式は認識されないのでしょうか? それとも書式に原因を求めるのが間違ってるのでしょうか?

  • EXCEL ブック単位の置換をマクロで実行したい

    EXCEL 2010を使用しています。 置換で以下の>>内の動作をマクロで作成しました。 >> 検索文字列 'C:\Program Files (x86)\Okasan Online Securities Co.,Ltd\岡三RSS\岡三RSS.xla'! 置換後の文字列 (上記の文字を削除したいので空白) 検索場所 ブック >> これですべて置換をすると2000件ほどが置換されます。 この動作をマクロの登録時には普通に実行できたのですが、その後に作成したマクロを実行して同じ動作をやると、検索場所がブックにならずシートでしか置換できません。 以下の>>内がマクロの内容です。 どのようにすれば、検索場所がブックになるのでしょうか。 >> Sub すべて置換アドインパス名なし() ' ' すべて置換アドインパス名なし Macro ' ' Range("A55").Select Cells.Replace What:= _ "'C:\Program Files (x86)\Okasan Online Securities Co.,Ltd\岡三RSS\岡三RSS.xla'!", _ Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:= _ False, SearchFormat:=False, ReplaceFormat:=False >>

  • ExcelVBAでの文字列置換について

    ExcelVBAでの文字列置換について ExcelVBAは全く初心者のですが、下記の処理を早急に行う必要があり、質問させていただきます。 物品の使用者をエクセル管理しています。 シート1のA列に物品名、B列に現使用者名を入力しています。(約2000件) 一部の使用者に変更があった場合に、シート2に振替リストを シート2 A列=現使用者 B列=新使用者 と作成しています。 シート1のB列:現使用者から、シート2のA列:現使用者と同一な文字列を検索し、シート2B列:新使用者に置換するマクロはどのように書けばよいのでしょうか? 可能であれば、シート2のC列に置換結果を表示させたいです。

  • エクセルのマクロ 大量の置換の記述を簡略化

    Cells.Select Selection.Replace What:="東京", Replacement:="東京都", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False このような置換のマクロが何十個とあって 置換前の語句と置換後の語句ごとに すべて記述していますが 「置換の記述そのものはまったく同じなので  その中に語句を順番に入れ込んでいく」 という風な記述はできるものでしょうか? もし方法があるならば御教授願いたいです 宜しくお願い致します

専門家に質問してみよう