Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


15298 / 76738 ←次へ | 前へ→

【66919】未定義の変数?
質問  あきなす  - 10/10/17(日) 6:49 -

引用なし
パスワード
   VBA初心者です。
色々調べてみたのですが、よく分からないので質問させてください。
Excelのバージョンは2003です。

テキストが設定されたオートシェイプと、設定されていないオートシェイプがあり、それらを判別しようと思っています。
文字列が設定されたオートシェイプのテキストフィールドへのアクセスは

Dim s As Shape

For Each s In ActiveSheet.Shapes
  If s.TextFrame.Characters.Text="Hogehoge" then
  :

でできます。これに対して、テキストフィールドに文字が設定されていない場合、ウォッチウィンドウでみてみると、Text変数自体が未定義?となっているため、上記のコードではエラーが出てしまいます。質問は、Text変数が定義されているか否かを判定する方法があるかどうかです。

IsNull(s.TextFrame.Characters.Text)

では型が違うとおこられてしまいます。こういうときはどうすればいいんでしょうか?

もちろん、回避策としてs.AlternativeTextが使えますが、Excel2007に持っていった時につかえなくなってしまったため、根本的な解決策をとりたいと思った次第です。

OnErrorを使う手もありますが、将来エラーでなくなったとき(そんなことはないのか?)修正が必要になりそうなのと、スパゲティ化(プロシージャへの切り分けがすすでいるので、めちゃくちゃにはならないけども)が嫌という、まあ、気分的なもので避けたいのです。あと、可読性もわるそうな気がします。(といいながら、OnError版は作ってしまいました)。

20年くらい前にN88-BASICを触って以来のBASICだったので、懐かしい感じをうけつつも、オブジェクト化がずいぶん進んで、隔世の感です。N88-BASIC時代は、3000行も書けば、わけがわからなくなってたのを思い出しました(笑)
2 hits

【66919】未定義の変数? あきなす 10/10/17(日) 6:49 質問
【66920】Re:未定義の変数? 補足 あきなす 10/10/17(日) 7:13 発言
【66921】Re:未定義の変数? 補足 teian 10/10/17(日) 7:43 発言
【66924】Re:未定義の変数? 補足 あきなす 10/10/17(日) 8:20 発言
【66923】Re:未定義の変数? ichinose 10/10/17(日) 8:07 発言
【66925】Re:未定義の変数? あきなす 10/10/17(日) 8:52 お礼

15298 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free