質問するログイン新規登録

Q&A

解決済

1回答

497閲覧

マウスボタン移動時にサブフォームの値を取得したい

misima

総合スコア17

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2023/10/24 03:36

編集2023/10/24 07:44

0

0

お世話になります。

現在、accessでサブフォームのテキストボックスにマウスを移動したときにメインフォームのテキストボックスにマウスを移動した先のテキストボックスの値を表示させようとしています。

試したこと
サブフォームのテキストボックス1の  "マウスボタン移動時"  に以下のVBAを組んだ

Private Sub テキストボックス_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

   Parent![テキストボックス1] = Me.テキストボックス1

End Sub

問題点
上記のVBAを組み込んでもメインフォームのテキストボックスに反映されない。

※試しに "クリック時に" 上記のVBAを組んでみたところ上手くいきました。

課題点
”クリック時” ではなく ”マウスボタン移動時” に値を取得できるようにしたい。

サブフォーム  帳票フォーム
サブフォームのオブジェクト  テキストボックス1  テキストボックス2
サブフォームのレコードソース テーブル ”顧客T”
使っているフィールド     ”記号” "顧客ID"
コントロールソース    テキストボックス1→"記号" テキストボックス2→"顧客ID"

サブフォームのテキストボックス1にA、B、C、Dという風にデータが入っています。サブフォームの テキストボックス1 にマウスを移動したときにメインフォームのテキストボックス1にも同じ値を表示したいのですが、"A" とは表示されるのですが、"B" "C" "D"にマウスを移動しても”A”としか表示されません。"B"や"C"をクリックしたときは、値を取得してくれるのですが、”クリック時”ではなくて”マウスボタン移動時”に値を取得できるようにしたいです。

なにか方法などがあれば教えていただきたいです。
どなたかご教授のほど宜しくお願いいたします。

環境は以下の通りです。

OS:win10
ver:2021

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

hatena19

2023/10/24 08:31

サブフォームは単票フォームですか。それとも帳票フォームですか。
hatena19

2023/10/24 08:36

帳票フォームで書いてありましたね。上記の質問は無視してください。
sk.exe

2023/10/25 01:31 編集

> サブフォームのテキストボックス1の  "マウスボタン移動時" > Private Sub テキストボックス_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) テキストボックスの名前とイベントプロシージャの接頭辞が一致していないようですが、それは実際の名前とコードなのでしょうか。 > サブフォームのテキストボックス1にA、B、C、Dという風にデータが入っています。 > サブフォームの テキストボックス1 にマウスを移動したときに > メインフォームのテキストボックス1にも同じ値を表示したいのですが、 > "A" とは表示されるのですが、"B" "C" "D"にマウスを移動しても”A”としか表示されません。 > Parent![テキストボックス1] = Me.テキストボックス1 (仮にイベントプロシージャの接頭辞が "テキストボックス1" であるとして) この時のサブフォームの[テキストボックス1]の値は、そのフォームのカレントレコードの[テキストボックス1]の値だからです。 > "B" "C" "D"にマウスを移動しても”A”としか表示されません。 ただマウスポインタ―を他のレコードが表示されている位置に移動させただけであって、カレントレコードはそのままなのですから当然そうなります。 > "B"や"C"をクリックしたときは、値を取得してくれる カレントレコードを他のレコードに移動させた直後に MouseMove イベントが発生しているためです。
misima

2023/10/25 08:39 編集

丁寧にありがとうございます!プロシージャの接頭辞はテキストボックス1です。申し訳ありません。質問を返すようで恐縮ですが、帳票フォームで既にMouseMove イベントが発生していて、マウスポインタ―を他のレコードが表示されている位置に移動させただけではMouseMove イベントを再び発生させることは不可能と考えてもよろしいのでしょうか?
sk.exe

2023/10/25 08:43

> マウスポインタ―を他のレコードが表示されている位置に移動させただけでは > MouseMove イベントを発生させることは不可能と考えてもよろしいのでしょうか? MouseMove イベント自体は発生していますし、以下のステートメントも実行されています。 > Parent![テキストボックス1] = Me.テキストボックス1 単に代入元となっている[テキストボックス1]の値が "A" である、というだけです。
guest

回答1

0

自己解決

別の方法も試してみます。
ご丁寧に教えて頂きありがとうございました。

投稿2023/10/29 23:20

misima

総合スコア17

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問