Access (VBA)

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

 
(Windows 10 Pro : Microsoft 365)
帳票フォームでカレントレコードを再度クリックしたときの件
投稿日時: 22/03/16 20:36:42
投稿者: コンギョ

いつもありがとうございます。
 
帳票フォームをクリックしたときに現在のレコードの位置は、Private Sub Form_Current()で取得することができるので、同じレコードを再度クリックしたときに帳票フォーム内のチェックボックスのフィールドをON/OFFしたいのですが、Private Sub Form_Current()はレコードを移動したときのみ発生するイベントなのでうまくいきません。
選択中のレコードを再度クリックしたときに、チェックボックスをON/OFFしたいときの方法は何かありますでしょうか。
 
ご指導の程、よろしくお願いします。

回答
投稿日時: 22/03/16 21:56:58
投稿者: hatena
投稿者のウェブサイトに移動

帳票フォームのどこをクリックしたときなのか、不明ですが、
詳細セクションのクリック時ではだめですか。
 

投稿日時: 22/03/16 22:18:46
投稿者: コンギョ

hatena様
 
いつもありがとうございます。

引用:
帳票フォームのどこをクリックしたときなのか、不明ですが、

テキストボックスが5つ隙間なく並んでいますが、どのテキストボックスをクリックしてもチェックボックスをON/OFFさせたいです。リストボックスをクリックしたときのようなイメージです。
ちなみに色を変えるテクニックはhatena様のサイトでご紹介されている「カレント行の背景色の変更」を参考にさせていただいております。ありがとうございます。
引用:
詳細セクションのクリック時ではだめですか。

上記でも説明させていただきましたが、テキストボックスはリストボックスのように配置しておりますので、詳細セクションのクリックイベントを発生させることができませんでした。
 
引用:
フォームヘッダーかフッターに非表示のテキストボックス txtID を配置します。

これをヒントに一つ前の位置を記録させるテキストボックス old_txtID を配置して
Private Sub Form_Current()
  Me.old_txtID = Me.txtID
    Me.txtID = Me.得意先コード
End Sub
 
としてみましたが、同列をクリックしたときはPrivate Sub Form_Current()が発生しないので、Me.old_txtID = Me.txtIDが成り立たたず苦戦しています。
 
どうかご指導の程、よろしくお願いします。

投稿日時: 22/03/17 09:07:29
投稿者: コンギョ

お世話になります。
 
いろいろ調べているうちに、テキストボックスのイベントで「MouseMove」イベントがありました。
帳票フォームでマウスのカーソルで現在のレコードを取得して「MouseMove」イベントを発生させて、そのレコードにあるテキストボックスの色を変える→クリックしたらカレントレコードになりチェックボックスのON/OFFするだとできそうに思えるのですが、「MouseMove」イベントで現在いる位置ってわかるものでしょうか。
 
ご指導よろしくお願いします。

投稿日時: 22/03/17 10:36:47
投稿者: コンギョ

hatena様
  
すみませんでした。
冷静に考えたら、削除するフラグを示すテキストボックスを用意して、からくりを作ることで解決しました。
⓵レコード移動時にPrivate Sub Form_Current()で移動フラグを立てる。
Aテキストボックスのクリックイベントの処理の最後に、移動フラグをリセットする。
Bテキストボックスを再度クリックしたときは、移動フラグはリセット状態で判定できる。(移動していない)
 
どうもありがとうございました。

投稿日時: 22/03/17 10:37:16
投稿者: コンギョ

解決しました。