- ベストアンサー
【Excel2003】テキストBOXを認識しない
VBAを使用してテキストボックス内のフォントを統一するプログラムを書きました。 でも同じシート内でもテキストBOXと認識してフォントを変更してくれるときと、 テキストBOXと認識しなくてフォントを変更してくれないときがあります。 何故でしょうか?分かる方教えてください。 プログラムは以下のよう書きました。 --------------- Dim tbx As TextBox For Each tbx In ActiveSheet.TextBoxes tbx.Font.Name = "MS 明朝" Next ---------------
- みんなの回答 (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
その他の回答 (1)
- DreamyCat
- ベストアンサー率56% (295/524)
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が出てきました。 その後、フォントが変換されるはずなんですが、変換されたのとされないのがありました。 変換されないのは図形(オートシェープ)のテキストだからでしょうか? その場合はどのようにすれば変換されますか? すいませんが教えてください。