使いやすいように設計された Microsoft リレーショナル データベース管理システムのファミリ。
MSDNの方を検索してみましたが、該当する質問がないようでしたので、こちらに。
私の環境でも、下記ソースにて、同様現象が再発致します。
解決方法としては、「Form_Unload時に、インスタンス化したオブジェクトに、Nothingをセットする」
ことで回避可能です。
検証環境は、Access2013(単体、別途Office2010 Personal導入済) + Windows7 32bitです。
他の環境における動作については、
手持ちがないため、勇士の方に検証をお願い致します。
accdbファイル新規作成後、クラスを追加
クラス名:CommonEvents
-----------ここから------------
Public CommonEvents As Control
Public WithEvents CommonTextBox As TextBox
Public Sub BindCtl(ByRef prControl As TextBox)
Set Me.CommonTextBox = prControl
End Sub
Public Sub UnBindCtl()
'紐付けされているコントロールを解放する
Set pubCommonTextBox = Nothing
End Sub
-----------ここまで-----------------
フォームを作成し、テキストボックスおよびボタンを1つ配置
-----------ここから------------
Private CE(0) As New CommonEvents
Private Sub Form_Load()
Call CE(0).BindCtl(Me.テキスト0)
End Sub
Private Sub コマンド2_Click()
Call CE(0).UnBindCtl
End Sub
-----------ここまで-----------------
・Formを起動し、すぐにデザインモードへ
→Access自体が強制終了
・Formを起動し、ボタンを押してからデザインモードへ
→問題なし
実際にプログラムとして使う場合は、form_Unloadイベントで、UnbindCtlを呼んでいます。
しかし、うっかりUnbindし忘れた状態で、
保存せずにデザインモードにすると入力内容が全て無駄になりますし、
DoCmd.Close acForm からでも同様に不正終了となってしまいますので、
Access側で、対応して欲しいところですね。