EXCEL VBA UserFormで困っています。
EXCEL VBA UserFormで困っています。
VBAプログラミングで以下のような現象が起こります。
開発環境 WinXP , EXCEL2003
ブックを起動するとメニューが表示され、そこからボタンを押すとuserform1が表示されるというプログラムなんですが、そのボタンを押してuserform1を起動しようとすると『問題が発生したため、 Microsoft Excel Windowsを終了します。・・・ エラー報告を送信する 送信しない』のメッセージが出て起動できない。
UserForm1.Showのステップで一旦止めてステップモードで続行すると正常に動作します。
過去に似た質問を見つけ、そのアドバイスを元に以下を試してみました。
http://okwave.jp/qa/q2001805.html
・エラーの発生行の特定
userform1.showの前に、userform1.label.visible=falseのように、表示、非表示を切り替える命令を出しており、どうやらその表示命令の行でつまづいている事がわかりました。
表示命令を全て消去し実行したところ、現在までは問題なく起動できています。
・on timeメソッドで時間差をつける
ラベルやボタンの表示、非表示命令行をまとめて、
Application.OnTime Now + TimeValue("00:00:01"), "ラベルボタン表示設定"
userform1.show
といった形で時間差をつけてみました。
結果として、userform1自体は立ち上がるようになったのですが、時間差で実行される"ラベルボタン表示設定"の実行時に「オートメーションエラーです。起動されたオブジェクトはクライアントから切断されました。」と出てくるようになってしまいました。
ラベルはまだ良いのですが、コマンドボタンの表示、非表示は、誤操作を防ぐ手段として非常に重要です。なんとかエラーを出さずにコード通りに起動する方法はありませんでしょうか。
お礼
トンチンカンな質問にお付き合いいただいて本当にありがとうございます。感謝に耐えません。 さて、ご教授いただいた方法については、 (1)パスが毎回違う(約25通りあります) (2)ブック名が毎回違う(無限に増えます) という問題があります。 それらを毎回書き直すというのは、残念ながら手間的にちょっと不可能です。 ので、この方法はちょっと難しいかなと感じます。 ユーザーフォームがなぜ初回だけ隠れてしまって、 2回目以降はちゃんと前面に出てくるのか、 その理由だけでも分かればと思うのですが...。 お時間がありましたらよろしくお願いします。