• ベストアンサー

テキストボックスのフォンを変更するマクロ

エクセルで沢山のテキストボックスのフォントを一括してMSPゴシックに変更するマクロとして以下を実行すると、処理自体は行われているようなのですが結果は元のフォンのままです。 Sub fonto() Dim con As Integer For con = 1 To ActiveSheet.TextBoxes.Count ActiveSheet.TextBoxes(con).Characters.Text = "" With Selection.Characters(Start:=1, Length:=1).Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 14 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With Next con End Sub どこがおかしいのでしょうか?  また、これだと文字を削除してしまうので、削除しない方法も知りたいのですが。

質問者が選んだベストアンサー

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.3

「元のフォントのまま」というのは、下のコードで < Selection > が、原因です。 For ~ Next で、テキストボックスの「インデックス番号」は、切り替えて いても「セレクト」は、していませんよね。 With Selection.Characters(Start:=1, Length:=1).Font それに、フォントを変えるのは、先頭の1文字だけですか? もし、全体のフォント種でしたら、 With TextBoxes(con).Characters.Font とするべきなのです。 あと、「文字を削除してしまう」のは、次の行があるからです。 ActiveSheet.TextBoxes(con).Characters.Text = "" ここの TextBoxes(con) が 次の行の Selection の替わりにあったら・・・ おしかったぁ~

peko__
質問者

お礼

ありがとうございました。 >With TextBoxes(con).Characters.Font >とするべきなのです。 正確には、With ActiveSheet.TextBoxes(con).Characters.Font でした。 でも助かりました。

その他の回答 (2)

  • nml
  • ベストアンサー率20% (4/20)
回答No.2

#1の訂正です。貼り付ける場所を間違えてしまいました。 フォントだけを変えるのであれば、 Sub fonto() Dim MyTextBox For Each MyTextBox In ActiveSheet.TextBoxes With MyTextBox .Font.Name = "MS Pゴシック" End With Next End Sub 文字を削除してしまったのは、 ActiveSheet.TextBoxes(con).Characters.Text = "" の部分だと思います。

peko__
質問者

お礼

ありがとうございました。

  • nml
  • ベストアンサー率20% (4/20)
回答No.1

フォントだけの変更であれば、 Sub fonto() Dim MyTextBox For Each MyTextBox In ActiveSheet.TextBoxes With MyTextBox .Font.Name = "MS Pゴシック" End With Next ActiveSheet.TextBoxes(con).Characters.Text = "" の部分だと思います。 End Sub 文字を削除しているのは、

peko__
質問者

お礼

ありがとうございました。

関連するQ&A