Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2013)
イベントプロシジャーの実行中止
投稿日時: 20/03/06 12:44:30
投稿者: やま3

フォームの中にコントロール(コンポボックス)を設定しています。
そのコントロールのイベントのフォーカス喪失時にデータが未入力の場合メッセージを表示し、フォーカスを戻し次のコントロールに移動しないようVBAを設定しています
 
このフォームを開いた直後にフォームを閉じる時に上記イベントが発生しないようにしたいのですが、よい方法をご教示ください
 
現在はコントロールのイベントのフォーカス喪失時が先に実行され、フォームを開いた直後にフォームを閉じる場合には必要のないそのイベントが、フォームが閉じられる前に実行されメッセージが表示されてしまいます。
 

回答
投稿日時: 20/03/06 13:37:30
投稿者: sk

引用:
フォームの中にコントロール(コンポボックス)を設定しています。
そのコントロールのイベントのフォーカス喪失時にデータが未入力の場合メッセージを表示し、
フォーカスを戻し次のコントロールに移動しないようVBAを設定しています

具体的にどのようなコードを記述されているのかを
明記されることをお奨めします。
 
引用:
このフォームを開いた直後にフォームを閉じる時に
上記イベントが発生しないようにしたい

・コンボボックスの Exit イベントではなく
 フォームまたはコンボボックスの BeforeUpdate イベントで
 処理するようにする。
 
・先にフォームの Dirty プロパティの値を判定し、その値が
 False である(カレントレコードが編集されていない)場合は
 そのプロシージャを抜けるようにする。
 
以上のいずれかが考えられます。

投稿日時: 20/03/06 14:41:19
投稿者: やま3

具体的にどのようなコードを記述されているのかを
明記されることをお奨めします。
 
>こんな感じです
 
>このコントロールの初期値に"親子ー入力"を設定
>入力チェックは「はい」
>次のタブ順位は埋め込みフォームの中にあるコントロール・・・子部品コード入力
 
>Private Sub CXXXX_Exit(Cancel As Integer)
If Forms![F_A30] = "親子ー入力" Then
      MsgBox "親コード未登録"
      Cancel = True
      Exit Sub
   End If
End Sub
 
 フォームまたはコンボボックスの BeforeUpdate イベントで
 処理するようにする。
>今からやってみます
 
 
・先にフォームの Dirty プロパティの値を判定し、その値が
 False である(カレントレコードが編集されていない)場合は
 そのプロシージャを抜けるようにする。
 
以上のいずれかが考えられます。[/quote]

投稿日時: 20/03/09 14:06:43
投稿者: やま3

この処理をとりやめました