Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11 Home : Microsoft 365)
括弧の文字列のフォント変更
投稿日時: 23/02/26 08:38:49
投稿者: ヘクセル

 
現在のデフォルテのフォントは「Meiryo UI」、標準、9ポイントに設定していますが、各データ中に括弧が含まれている場合は、そのカッコごとのみフォントを「MSP 明朝」に変更してください。
 
|あいうえおかきけこ | → |あいうえお (かきくけこ)|
|  Meiryo UI    | → | Meiryo UI| MSP明朝 |

回答
投稿日時: 23/02/26 10:11:49
投稿者: simple

変更してください、ですかあ。
 
正規表現というものを使った例です。
対象セル範囲は、選択範囲としました。
 

Sub test()
    Dim re      As Object
    Dim matches As Object
    Dim m       As Object
    Dim s       As String
    Dim r       As Range

    Set re = CreateObject("VBScript.RegExp")
    With re
        .Global = True
        .Pattern = "(\([^)]*?\))"
    End With

    For Each r In Selection
        s = r.Text
        Set matches = re.Execute(s)
        For Each m In matches
            r.Characters(m.FirstIndex + 1, m.Length).Font.Name = "MS P明朝"
         Next
    Next
End Sub

カッコ記号は例示に則り、半角を前提としました。
なお、カッコが複数あっても上記は対応できていますが、
それが仮に入れ子になっていると、難易度が高くなりますね。
上記はそれには対応していません。

投稿日時: 23/02/26 10:46:57
投稿者: ヘクセル

状況査定は指定道理です
ばっちりOKです
懸命に .Pattern = "(\([^)]*?\))" が終始見つけられずにいました
こんなに複雑な指定だとは思いませんでした
 ="(*)"とか ="(?)"じゃ道理で永遠にダメなわけです
あと結果的にFor Each r In Selectionを採用していただき重宝しました
どうもありがとうございました