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
>文の一部にだけ書式が設定されているのを
一部というのをしっかり説明しないと
出来ますか? に答えられない。
質問者の疑問は自ずと読者・回答者に判ると思ったら、読者は迷惑。
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」ででも照会のこと。ここでは略。
お礼
ありがとうございます まだしていませんが、なんかこれだと出来そうな気がします