こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【Excel2003】テキストBOXを認識しない

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

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

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

Next

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

投稿日時 - 2012-04-23 07:25:29

QNo.7436485

すぐに回答ほしいです

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

図形の種類によっては提示のコードでエラーになりますね。
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

投稿日時 - 2012-04-23 12:28:56

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

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

投稿日時 - 2012-04-23 08:26:26

補足

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

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

投稿日時 - 2012-04-23 09:00:41

あなたにオススメの質問