[[20120924182634]] 『オートメーションエラーです,,,』(ちか) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『オートメーションエラーです,,,』(ちか)

よろしくお願いします

ユーザーフォームを立ち上げる際に

オートメーションエラーです
例外が発生しました

と表示され,フォームが立ち上がりません

2日前までは問題なく動いていたのですが突然です

エラーの部位を探しようにも,探し方がわかりません

開発,コード,Visual Baisc,マクロの実行から入ると大丈夫でした

漠然とした内容で申し訳ありませんが,解決の糸口だけでもお願いします

Win7, Excel 2010です


 まず実際のエラーの場所だけど、VBE画面で、ツール-->オプション の 全般タブの
 エラートラップを クラスモジュールで中断(R) にチェックしてOK。
 これで実行すると、実際のエラーの場所がわかると思う。

 2日前と、何かかわっていないかな? ユーザーフォームにコントロールをいくつか追加したとか。
 で、そもそものフォームに膨大な数のコントロールが配置されていたりするかな?

 実際にエラーになったコードをアップしてもらえれば、もう少し原因を特定できるかもしれない。
 とりあえず、たとえば、フレーム上のコントロールやマルチページ上のコントロールがあれば
 Me.Frame1.TextBox1 とか Me.MultiPage1.Page1.CommandButton1 といったように、
 オブジェクト階層を省略せずにすべて明記すればどうなるかなぁ?

 (ぶらっと)

ぶらっとさん

いつもありがとうございます

実は(汗),ご指摘のごとくコントロールの追加をして300項目ぐらいになっています

まずオブジェクト階層を整理してみます

(ちか)


以前は有り難うございました

報告です

コントロールを増やす前に戻してみました
(増やしたコンボボックスはそのままでリストの設定を消してみました)

そうすると動くように

一つのユーザーフォームに設置できるコントロールには数の制限があるのでしょうか?

因みに,300くらいはほしいのですが,,,

ご教授ください

(ちか)


 やっかいだよね、オートメーションエラーは。
 実際には様々な要因で発生。
 オートメーションエラーのメッセージに表示される数字コードでその内容を表しているけど
 それを参照しても、これだ!という対処がなかなかできない。同じコードをステップ実行すると
 まず、エラーはおこらずうまくいくケースも多いし。

 コントロールの数の限界ということは聞いたことがない。あくまで、実行時のメモリーの状態によるんだと思う。

 こちらでも過去に、300個ぐらいのコントロールをフレーム上に配置したユーザーフォームを
 作った時に発生。その時の対処としては、まずは、コメントしたように、たとえば
 With Me.Frame1 といったようにくくって、その中で .TextBox1 とか .Label2 とか、要は
 オブジェクト階層をすべて明示的に与え、かつ、オブジェクトへのアクセス経路を最短にするように
 コードを変更、あわせて、値の取得であったり、値のセットであったりする部分を連続したコードから
 分離し、OnTime 等で、非同期に時間差をつけて実行したり・・・

 それでも、VBAがActiveXコントロールを処理するためのメモリー域が、おそらくパンパンになっていて
 保守フェーズで、少しでも追加すると、またもや発生。このいたちごっこ。
 最終的には、Frameをやめ、ユーザーフォームに直置き、また、デザインを根本的に見直し、
 ヘッダー部分用ユーザーフォームとか、明細部分用ユーザーフォーム等に分離。
 要はユーザーフォームそのものを圧縮した形できりぬけた。

 ピリっとした回答になっていないけど、まずは、このような順番でアプローチしてみてはいかが?

 (ぶらっと)

ありがとうございます

問題なく動いていた状態に戻し、追加のコントロールは別のフォームに設置することにしました
あとオブジェクト階層の整理もしてみようと思います

(ちか)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.