質問: マクロでセルの中の一部の書式を選び出したり出来ますでしょうか? マクロでセルの中の一部の書式を選び出したり出来ますでしょうか? エクセルにウェブの文字列を貼り付けたのですけど 文字列の中の書式で太字や赤字のあるセルだけをマクロで選んだり出来るのでしょうか? たとえばエクセルに貼り付けた結果が下のようになった場合(セルa1~a5) 1番・東京23区 2番・大阪府大阪市 3番・愛知県名古屋市 4番・福岡県福岡市 5番・北海道札幌市 1~5という数字は太字で書かれてある 「東京23区」という文字は赤字で書かれてある 「大阪市」という文字は太字で書かれてある(「大阪府」は普通の書式) その他の文字は普通の書式 これをマクロで何とかすると セルb1に「赤」 セルb2に「太」 セルb3~b5は何も無し って感じに、最初の数字の書式は無視して、文の一部にだけ書式が設定されているのを選び出して、表示できるように出来ますか?
回答: >文の一部にだけ書式が設定されているのを 一部というのをしっかり説明しないと 出来ますか? に答えられない。 質問者の疑問は自ずと読者・回答者に判ると思ったら、読者は迷惑。 1シート上で大阪府の入ったセルのその文字だけの書式をvbaで割り出して、別関係セルに情報を書き出すなら出来るかもしれない。 (1)大阪府の在るセルをfindメソッドなどで検索 (2)見つかったセルの大阪府の文字列の位置を割り出す (3)その大阪府の文字列部分に設置されている書式を割り出す。 書式のどれか(何か、例えば太字か否か、フォントサイズ、フォント色などを決めて)に決めないと一遍に複数書式は割り出せないでしょう。 findメソッドを使うにはvbaとしては中級以上の技量が要るもの。ただしマクロの記録が採れたり、webなどには例はあふれているが。 参考 sub test01() set f = range("a1:d10").find("*大阪府*") msgbox f.address p = instr(f, "大阪府") msgbox p x = f.characters(p, 3).font.italic if x = true then msgbox "斜体です" else msgbox "斜体ではありません " end if end sub ーー テスト sheet1のc4に「古くから近畿の大阪府(3文字斜体)の人は」と入れて実行 c4 8 斜体です と出る。 c3に「沈下気味の大阪府(3文字赤字)は」と入れて実行すると c3 6 斜体では在りません どでる。 (しかしfont.colorは別途コードで聞き出さないとダメということ) ーー 以上は大阪府を含む上記文字列が、初出である場合でテストしたが、複数セルに出現する場合は findメソッドのコードを改良して、2番目以降のセルも捉えられるようにしないとならない。 webで「vba find」ででも照会のこと。ここでは略。