- ベストアンサー
マクロでセルの中の一部の書式を選び出す方法
- マクロを使用すると、エクセルのセルの中から特定の書式を選び出すことができます。
- たとえば、ウェブの文字列をエクセルに貼り付けた場合、太字や赤字のあるセルをマクロで選択できます。
- セル内の一部にだけ書式が設定されている箇所を選び出して表示することも可能です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
1文字づつ見て行くしかないのでは? 以下のサンプルでは、A列のセルを一行づつ、1文字づつ見て行って、赤字(ColorIndex = 3)、太字(Bold = True)を探してB列に結果を書き出します。 赤字も太字もある場合は「赤太」と表示します。 Sub Sample() Dim r As Range Dim sRed As String Dim sBold As String Dim i As Long For Each r In Range("A1:A10") sRed = "" sBold = "" For i = 1 To Len(r) With r.Characters(Start:=i, Length:=1).Font If .ColorIndex = 3 Then sRed = "赤" If .Bold = True Then sBold = "太" End With If (sRed = "赤") And (sBold = "太") Then Exit For Next i r.Offset(0, 1) = sRed & sBold Next r End Sub
その他の回答 (2)
- mt2008
- ベストアンサー率52% (885/1701)
ANo.1 です。 失礼、1文字目は無視するんですね。 以下のように修正してください。 For i = 1 To Len(r) ↓ For i = 2 To Len(r)
- imogasi
- ベストアンサー率27% (4737/17069)
>文の一部にだけ書式が設定されているのを 一部というのをしっかり説明しないと 出来ますか? に答えられない。 質問者の疑問は自ずと読者・回答者に判ると思ったら、読者は迷惑。 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」ででも照会のこと。ここでは略。
お礼
ありがとうございます 説明が不十分で申し訳ありません webで探そうにも、どうゆう解決方法が有るのかさえ分からないので これから勉強させてもらいます
お礼
ありがとうございます まだしていませんが、なんかこれだと出来そうな気がします