- 会社でOffice2016を(やっと)導入したさいに、同じエラーで強制終了するようになった。
◎環境
Windows7・Access2016
◎発生個所
原因は分からないが、FormのUnloadイベントのEnd Subが終わったところで強制終了する。
Private Sub Form_Unload(Cancel As Integer) '↓End Subを実行したら強制終了する。 End Sub
◎対応方法
WithEventsを宣言しているオブジェクト変数に、Form_Unloadの辺りでNothingをSetする。
'TestClass クラスモジュール Public WithEvents AccessTextBoxEvents As Access.TextBox Public Sub セット(ByRef txtbox As Access.TextBox) Set AccessTextBoxEvents = txtbox AccessTextBoxEvents.OnChange = "[EVENT PROCEDURE]" End Sub Private Sub AccessTextBoxEvents_Change() MsgBox "TEST" End Sub
上記のようなクラスモジュールがあるとすれば、フォームの方にはこう記述する。
'Form1 Dim TestEvents(0) As New TestClass Private Sub Form_Load() TestEvents(0).セット Me.テキスト1 End Sub Private Sub Form_Unload(Cancel As Integer) 'NothingをSetすることで強制終了を回避する。 Set TestEvents(0) = Nothing End Sub
これで会社の環境では、強制終了しなくなりました。
ま、一番いいのは、Windows8.1以降にする事かもしれません、が…Windows10のAccess2016なら、強制終了しないんです。
ナゾ。