Excel VBA質問箱 IV

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

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


12797 / 13644 ツリー ←次へ | 前へ→

【8602】ユーザーフォームのActivateイベントについて TATSU 03/10/26(日) 0:42 発言
【8604】Re:OSではなく、Excelのバージョン 角田 03/10/26(日) 11:16 回答
【8607】Re:OSではなく、Excelのバージョン 角田 03/10/26(日) 14:57 発言
【8609】Re:OSではなく、Excelのバージョン TATSU 03/10/26(日) 23:10 お礼

【8602】ユーザーフォームのActivateイベントにつ...
発言  TATSU E-MAIL  - 03/10/26(日) 0:42 -

引用なし
パスワード
   はじめまして、よろしくお願いします。

OSにWindowsXPHome
EXCEL2000のVBAで、
フォームA(モーダル)の上にフォームB(モーダル)を表示して、フォームBが閉じたときにフォームAがアクティブになる(タイトルバーがアクティブ色になる)ので、UserForm_Activateのプロシージャに処理を記述したのですが、Activateイベントが実行されません。
Windows2000では実行されるのですが、OSによってフォームのイベントが実行されたりされなかったりするのでしょうか?

【8604】Re:OSではなく、Excelのバージョン
回答  角田 WEB  - 03/10/26(日) 11:16 -

引用なし
パスワード
   こんにちは。
>OSにWindowsXPHome
>EXCEL2000のVBAで、
>フォームBが閉じたときにActivateイベントが実行されません。
>Windows2000では実行されるのですが
OSではなく、エクセルのバージョンによる違いです。
おそらく、
 Win2000‥‥‥Excel2000(SR無し)
 WinXP ‥‥‥Excel2000(SR1〜SP3)
ではないですか?

UserForm1表示→UserForm1からUserForm2を表示
         →UserForm2を閉じてUserForm1へ戻る
で『UserForm1へ戻った時』に[Activate]イベントが発生する
バージョンと発生しないバージョンが有ります。

・Excel97(SR無し〜SR2)‥‥‥ 発生する
・Excel2000(SR無し)  ‥‥‥ 発生する
・Excel2000(SR1〜SP3) ‥‥‥ 発生しない
・Excel2002      ‥‥‥ 発生しない
Win2000の方もエクセルにパッチ(SR1〜SP3)を掛けて、WinXP側と
同じ条件にした方が良いでしょうね。

なお、UserForm2の代わりに、MsgBox(InputBox)を表示した後には
いずれのバージョンでも[Activate]は発生しません。

補)Excel2000(SR1)〜でも、
   UserForm1 上に【有効なコントロール】がひとつも無い
  場合では、このタイミングでActivateが発生します。
  「有効なコントロールが無い」とは
    ・UserForm1 上に入力系コントロールが全く無い
    ・UserForm1 上の入力系コントロールが全て
      [TabStop=False]もしくは[Enabled=False]
     になっている
  の何れかです。

PS:近日中に、この件は私のHPで[Tips]としてまとめておきます。

【8607】Re:OSではなく、Excelのバージョン
発言  角田 WEB  - 03/10/26(日) 14:57 -

引用なし
パスワード
   >PS:近日中に、この件は私のHPで[Tips]としてまとめておきます。
ここにあります↓
「油断のならないActiVate」
http://www.h3.dion.ne.jp/~sakatsu/Excel_Tips07.htm

【8609】Re:OSではなく、Excelのバージョン
お礼  TATSU E-MAIL  - 03/10/26(日) 23:10 -

引用なし
パスワード
   ありがとうございました。
EXCEL2000で同じバージョンだと思ってたら、SRやSPによって動作が違うとは、思いもよりませんでした。
今のところ対策として、Activateが発生しないので、Unloadしてから再びShowして動かしてましたが、Hideでもいいんですね。参考になりました。
でも、どうしてバージョンなどによって動作を異なるものにするんでしょう?
Activateイベントに何か不都合なことでもあったんですかねぇ・・・。
今まで作った私のコードの大半はかなり致命傷です(泣)

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