Microsoft Access 掲示板

Inputboxのように値を入力するまで待つ方法

2 コメント
views
4 フォロー

よろしくお願いいたします。

フォームでテキストボックスをダブルクリックすると、イベントが発生します。

そのイベントに、別フォームに入力した値に基づき処理を分岐する記述をしている最中です。

別フォームには、1つのコンボボックスがあり、この値を使います。

しかし、ダブルクリックイベントでは当然、フォームを開いて、入力する値を待たずにとっとと処理が終了してしまいます。

Inputboxのように入力する値を待ってくれるような記述は何かありますでしょうか?

あん
作成: 2024/09/10 (火) 13:55:42
通報 ...
1
hatena 2024/09/10 (火) 15:18:10 修正

DoCmd.OpenFormでフォームを開くときに、ダイアログモードを指定すればフォームを閉じる(あるいは非表示になる)まで次のコードにすみません。また、開いている間はユーザーはこのフォーム以外を操作できません。それを利用するといいでしょう。
具体的には、WindowMode引数にacDialogを設定します。   

DoCmd.OpenForm メソッド (Access) | Microsoft Learn

コード例

'テキストボックスのダブルクリック時
Private Sub テキスト1_DblClick(Cancel As Integer)
    Cancel = True
    DoCmd.OpenForm "InputForm", WindowMode:=acDialog
End Sub
'別フォーム(InputForm)上のコマンドボタンのクリック時
Private Sub OKボタン_Click()
    Me.Visible = False '非表示にする
    'ダブルクリックしたテキストボックスがActiveControlになる
    Screen.ActiveControl = Me.コンボ2.Value
    DoCmd.Close acForm, Me.Name
End Sub
2
あん 2024/09/10 (火) 15:40:56 b41ab@a5bc1

hatena様

ご返答ありがとうございます。

今回ばかりは、コードをストップする手立てはないんじゃないかと思っていました。

ダイアログにすれば止まる、というのは驚きました。

それと、別フォームを非表示にしたら、元フォームのテキストボックスがアクティブコントロールになること、
また、Screen.という使い方も知りませんでした。

今回も助かりました。
ありがとうございました。
早速、やってみます!