質問: マクロで書式ごと置換 マクロで書式ごと置換 いつもお世話になります。 今回は標記の件についてお伺いしたく質問を投稿させていただきました。 現在、[d5:cn93]に配置している文字列データを記号に置換する作業をおこなっています。置換マクロに関してはreplaceを使用し、今のところ問題なく動いています。作業工程としては、上記の範囲にあるデータの一覧を作成し、どのデータをどのような記号に置き換えたいかの一覧を附します。 例) a1 b1 ○ イチゴ ◆ バナナ [d5:cn93]置換対象の文字列例 イチゴ,バナナ マクロでは置換したい文字列、置換したい記号の値をreplace関数に与えて、上記の範囲にあるセル1つ1つに置換をかけていく、というものです。 今までは、文字列の書式は問題ではなかったのですが(置換後に一括変換)、上のほうから「イチゴを赤い○、バナナを黄色い◆のように、色をつけられないか」といわれました。 置換ウィザードを試してみたのですが、セル全体の文字列の色が変わってしまいうまくいきませんでした。 またreplaceで色情報も置換する方法もわかりません(無いのかもしれませんが)・・・ そこで「色情報を持たせたまま、文字列の一部を置換」する方法を教えてください。 これまでのデータを使用したいので、データは以下のように並んでいます。 a1 b1 赤色の○ イチゴ 黄色の◆ バナナ [d5:cn93]置換対象の文字列 イチゴ,バナナ
回答: こんばんは! セル内の「イチゴ」を赤の「○」に、「バナナ」を黄色の「◆」にすれば良いわけですよね? そういうことだとして・・・ 一旦、文字列を記号に置換し、もう一度一文字ずつ舐めるように探して、○と◆の色を変えるようにしてみました。 尚、一旦マクロを実行すると元に戻せませんので 別シートにコピー&ペーストしてマクロを実行してみてください。 一例です。 sub test() dim i, j as long for i = 5 to 93 for j = 4 to 92 if cells(i, j) like "*イチゴ*" then cells(i, j) = replace(cells(i, j), "イチゴ", "○") elseif cells(i, j) like "*バナナ*" then cells(i, j) = replace(cells(i, j), "バナナ", "◆") end if next j next i dim k as long dim str as string for i = 5 to 93 for j = 4 to 92 for k = 1 to len(cells(i, j)) str = mid(cells(i, j), k, 1) if str = "○" then cells(i, j).characters(start:=k, length:=1).font.colorindex = 3 elseif str = "◆" then cells(i, j).characters(start:=k, length:=1).font.colorindex = 6 end if next k next j next i end sub 尚、前半部分の文字列の置換は大丈夫のようなので、後半部分の色変更だけ別のマクロをしてもokだと思います。 参考になればよいのですが・・・m(__)m