- ベストアンサー
【Excel2003】マクロでテキストボックス編集
お世話になります。 マクロを使ってある条件ごとにシート内全てのテキストボックスのフォントを変更するようにしたいと考えています。 条件 ・テキストボックス内に(1)がある場合はテキストボックス内のフォントをMS明朝にする ・テキストボックス内に(2)がある場合はテキストボックス内のフォントをMSゴシックにする イメージとしては、 (1)あいうえお←MS明朝 (2)あかさたな←MSゴシック です。 この場合のマクロのプログラムを教えてください。 お願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
あっているかどうか試してください。 Dim tbx As TextBox For Each tbx In ActiveSheet.TextBoxes If InStr(tbx.TEXT, "あいうえお") > 0 Then tbx.Font.Name = "MS 明朝" ElseIf InStr(tbx.TEXT, "あかさたな") > 0 Then tbx.Font.Name = "MS ゴシック" End If Next
その他の回答 (2)
- xls88
- ベストアンサー率56% (669/1189)
複数ある場合にも対応してみました。 ★1の行は不要なら消してください。 あるいはフォント名を正しい名前に変えて使ってください。 Dim tbx As TextBox Dim txt As String Dim s As Long txt = "あ" For Each tbx In ActiveSheet.TextBoxes If InStr(1, tbx.Characters.TEXT, txt) > 0 Then tbx.Font.Name = "MS 明朝" '★1 Do s = InStr(s + 1, tbx.Characters.TEXT, txt) With tbx.Characters(s, Len(txt)) .Font.Name = "HGP創英角ポップ体" End With Loop While InStr(s + 1, tbx.Characters.TEXT, txt) > 0 End If Next
- xls88
- ベストアンサー率56% (669/1189)
≫No.1 この回答への補足 Dim tbx As TextBox Dim txt As String Dim s As Long txt = "あ" For Each tbx In ActiveSheet.TextBoxes If InStr(tbx.Characters.TEXT, txt) > 0 Then tbx.Font.Name = "MS 明朝" s = InStr(tbx.Characters.TEXT, txt) With tbx.Characters(s, Len(txt)) .Font.Name = "HGP創英角ポップ体" End With End If Next 上記サンプルでは文字列内に該当文字が複数ある場合には対応していません。 複数ある場合はtbx.Charactersをループすることになると思います。
補足
早速の回答ありがとうございます。 出来ました!! ありがとうございます。 もしよければまた教えてほしいのですが、 上記の例で あいうえお←MS 明朝 あかさたな←MS ゴシック でお願いしましたが、 例えば上記の「あ」のみフォントをHGP創英角ポップ体にすることも可能でしょうか? 何度もすいませんが教えてください。