- 締切済み
Access2000:コントロールの入力制限
特定のコントロールの入力内容によって、他のコントロールの入力を制限したいのですが方法がわかりません。 設定したいのは以下の内容です。 ・コントロールA(Yes/No型)のチェックボックスをONにした場合のみ、コントロールB(テキスト型)にテキストを入力できるようにする ・コントロールC(コンボボックス)である項目を選択した場合のみ、コントロールD(テキスト型)にテキストを入力できるようにする 入力できない場合は、テキストボックスの色を変えるなどして、入力不要なことがわかる状態にしたいです。 ちなみに上記のコントロールはすべて同じクエリ(テーブル)上にあるものです。 どのように設定すればよいか教えてください。よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- PAPA0427
- ベストアンサー率22% (559/2488)
いやあ~~~~~大変申し訳なかったです。m(__)m コントールCは、コンボボックスだったでんすね。(汗) じゃあこんなんで試してみてください。 Private Sub Cnt_C_LostFocus() If Me.Cnt_C.TEXT = 入力可の条件1 OR _ Me.Cnt_C.TEXT = 入力可の条件2 OR _ ・ ・ ・ Me.Cnt_C.TEXT = 入力可の条件最終 Then Me.Text_D.Enabled = True Me.Text_D.Visible = True Else Me.Text_D.Enabled = False Me.Text_D.Visible = False End If End Sub イベントをロストフォーカスで取得しないと、コンボボックスの場合は入力が確定しないため、コンボボックスを参照しても値を取得できません。つまりコンボボックスの入力確定=リターンキーを押すという事です。
- PAPA0427
- ベストアンサー率22% (559/2488)
ごめんなさい。情報を見逃していました。 If Cnt_A = True Then ↓ If Cnt_A = vbYes Then に変えてください。OKなはずです。
- PAPA0427
- ベストアンサー率22% (559/2488)
#2です。 >No.2のかたの説明だと「.」になっています。入力時は「!」を「.」に置き換えて →「!」でも「.」でもかまいせん。 >「入力できる状態を記述する」がひっかかっているようです →チェックボックスにチェックが入ると値が「True」もしくは「-1」になります。そのままで動きませんでしたか?もちろんフォーム上に配置されているチェックボックスのオブジェクト名なんか書き換えたとしですが? 当方では動作確認済です。もし動作しないのならばオブジェクト名が間違っている可能性があります。ラベルの方にオブジェクト名を設定していませんか?
- PAPA0427
- ベストアンサー率22% (559/2488)
こんなのはどうでしょう? Private Sub Cnt_A_Click(Value As Integer) If Cnt_A = True Then Me.Text_B.Enabled = True Me.Text_B.Visible = True Else Me.Text_B.Enabled = False Me.Text_B.Visible = False End If End Sub Private Sub Cnt_C_Click(Value As Integer) If Cnt_C = True Then Me.Text_D.Enabled = True Me.Text_D.Visible = True Else Me.Text_D.Enabled = False Me.Text_D.Visible = False End If End Sub Private Sub Form_Load() Me.Text_B.Visible = False Me.Text_D.Visible = False End Sub コントロールA: Cnt_A テキストB : Text_B コントロールC: Cnt_C テキストD : Text_D と設定されている場合 テキストボックスが、表示/非表示に切り替わります。
- O_cyan
- ベストアンサー率59% (745/1260)
フォームを開く時のイベントに Me!コントロールB.Enabled = False Me!コントロールD.Enabled = False で使用出来ない状態でフォームを開きチェックボックスのクリック時のイベントに Me!コントロールB.Enabled = True でチェックした場合のみ使用できるようになります。 コントロールCでの選択の場合も更新後処理で Private Sub コントロールC_AfterUpdate() If 入力出来る状態の条件を記述する Then Me!コントロールD.Enabled = True End If End Sub こんな感じでOKのはずですから試してみてください。
補足
チェックボックスのほうは設定できました。ありがとうございます。 コンボボックス(コントロールCとD)のほうがうまくできません。 >If 入力出来る状態の条件を記述する Then の「入力できる状態を記述する」がひっかかっているようです。この部分にはコンボボックスの選択項目をそのまま入れればよいのでしょうか。 たとえば、選択項目が「あ」「い」「う」「え」「お」だとすると If あ Then とすればよいのでしょうか。 また、「あ」「い」のどちらかが選択されたときなど入力できる条件が複数ある場合は、どのように記述すればよいのでしょうか。 すみませんがよろしくお願いします。 あと Me!コントロールB.Enabled = False と、「Me」のあとの文字がNo.2のかたの説明だと「.」になっています。入力時は「!」を「.」に置き換えて入力したのですが、どちらでも問題ないのでしょうか?(コントロールA/Bは正常に動作しています) 初歩的な質問で申し訳ありませんが、よろしくお願いします。
補足
PAPA0427さん、どうもありがとうございます。 うまく設定できないコントロールCはチェックボックスではなく、コンボボックス(ドロップダウンリスト)なのです。 PAPA0427さんに最初に教えていただいた内容は、コントロールA/Cともにチェックボックスの場合のようです。 コントロールC(コンボボックス)で特定の項目を選択した場合のみ、コントロールD(テキストボックス)をアクティブにできる方法を教えてください。 何度もすみませんが、よろしくお願いします。