Excel VBA質問箱 IV

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

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


11895 / 76734 ←次へ | 前へ→

【70368】Re:VBA Userformの表示、非表示について。
発言  Abyss  - 11/11/6(日) 2:15 -

引用なし
パスワード
   > 邪道なのでしょうか・・・・・・?

コーディングに「邪道」と言う概念はないと
思いますよ。しかし、今回の現象はModeless
Userformのバグの一つだと私は思います。
(VBAのUserformに完璧さを求めるのも無意味ですけどね)

Userformもクラスですので、オブジェクトイベントの
キャッチが可能です。それを利用すれば、もう少し
シンプルにコードを書けます。

WorkbookイベントもUseformモジュールの
中で記述するだけです。そうすると、Userformインスタンスが
存在する時だけに目的のイベントを掴む事ですので。

それから、上で述べましたように今回の件は
ModelessユーザーフォームをHideする際、インスタンス管理に
なにかしら問題があると考えられます。
個人的には「Userform1」と言うクラス名を直接使うのは
テスト以外ではほとんどないですが、
今回は下記のような非同期Likeな方法で回避できると思います。
(本音はAPITimerを使うべきだと思っていますが)

'(標準モジュール)

Private Sub auto_open()
  UserForm1.Show 0
End Sub

Private Sub FormHide()
  UserForm1.Hide
End Sub


'(Userformモジュール)

Private WithEvents WB As Workbook

Private Sub UserForm_Initialize()
  Set WB = ThisWorkbook
End Sub

Private Sub WB_Activate()
  StartUpPosition = 0 '元の位置から表示。
  Show 0
End Sub

Private Sub WB_Deactivate()
  Application.OnTime Now, "FormHide"
End Sub

Private Sub WB_BeforeClose(Cancel As Boolean)
  Set WB = Nothing
End Sub

17 hits

【70337】VBA Userformの表示、非表示について。 瞬希 11/11/2(水) 20:08 質問
【70339】Re:VBA Userformの表示、非表示について。 UO3 11/11/3(木) 6:06 回答
【70340】Re:VBA Userformの表示、非表示について。 瞬希 11/11/3(木) 10:33 お礼
【70360】VBA Userformの表示、非表示について。 瞬希 11/11/5(土) 20:04 質問
【70361】Re:VBA Userformの表示、非表示について。 Abyss 11/11/5(土) 20:19 発言
【70363】Re:VBA Userformの表示、非表示について。 瞬希 11/11/5(土) 21:43 発言
【70366】Re:VBA Userformの表示、非表示について。 瞬希 11/11/5(土) 22:58 発言
【70362】Re:VBA Userformの表示、非表示について。 UO3 11/11/5(土) 21:41 発言
【70364】Re:VBA Userformの表示、非表示について。 瞬希 11/11/5(土) 21:46 発言
【70367】Re:VBA Userformの表示、非表示について。 瞬希 11/11/5(土) 23:01 質問
【70368】Re:VBA Userformの表示、非表示について。 Abyss 11/11/6(日) 2:15 発言
【70369】Re:VBA Userformの表示、非表示について。 瞬希 11/11/6(日) 7:21 お礼

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