これ何て呼びますか

VBAを使用してテキストボックス内のフォントを統一するプログラムを書きました。
でも同じシート内でもテキストBOXと認識してフォントを変更してくれるときと、
テキストBOXと認識しなくてフォントを変更してくれないときがあります。
何故でしょうか?分かる方教えてください。
プログラムは以下のよう書きました。

---------------
Dim tbx As TextBox

For Each tbx In ActiveSheet.TextBoxes
tbx.Font.Name = "MS 明朝"

Next

---------------

A 回答 (2件)

図形の種類によっては提示のコードでエラーになりますね。


On Error ステートメントでエラー制御したりしていますか?
または On Error + シートの保護をかけていたりしているとか?

下記、ちょっと試してみてください。

ActiveSheet.TextBoxes.Font.Name = "MS 明朝"

70個までだったら対応できるはずなんですが。



70個超える場合は
Dim tbx As Object 'TextBox
For Each tbx In ActiveSheet.TextBoxes
  tbx.Font.Name = "MS 明朝"
Next
    • good
    • 0

Vista , Excel 2010 なので環境が違いますが


10個作成して実行してみましたがまったく問題ありません。
そのときによってというのはあり得ないことなので
画面表示(描画)が不完全なだけかもしれません。
・うまくいかないのがあったときにシートを最小化・元に戻すなどで
再描画(単なる表示・非表示など)してみてください。
もしそれで直るようなら下記コードのようにDoEventsをいれればきちんと書き換えられるはずです。

・あと1点は単なる見間違い。図形(オートシェープ)のテキストだと、このコードでは書き換えはおこりません。

Dim tbx As TextBox
MsgBox Sheet1.TextBoxes.Count
For Each tbx In Sheet1.TextBoxes
With tbx.Font
.Size = 14  '11
.Color = &HFF00FF 'BGR
.Name = "MS ゴシック" '"MS 明朝"
End With
 DoEvents
Next

この回答への補足

早速の回答ありがとうございます。

教えていただいたコードでマクロをかけてみました。
シート内にテキストBOXが25個ありまして、
マクロをかけると「25」とメッセージBOXが出てきました。
その後、フォントが変換されるはずなんですが、変換されたのとされないのがありました。
変換されないのは図形(オートシェープ)のテキストだからでしょうか?
その場合はどのようにすれば変換されますか?
すいませんが教えてください。

補足日時:2012/04/23 09:00
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報