マイクロソフトのデータベースアクセス(以下Access)で帳票フォーム上に設置したコンボボックスから、値を選択して別のテキストボックスに値を代入するというシンプルな仕組みにちょっと時間が掛かったので備忘録にしました。
注意ポイント
帳票フォームでの、非連結のコンボボックスは、全てのレコードのコンボボックスが同じ値を表示して使い物になりません。
帳票フォームでのコンボボックスは非連結ではNG
過去にも同じような現象(Accessの仕様)で悩んで時間をとられたことがありました。
途中で思い出して、非連結のコンボボックスから、テーブルにフィールドを追加して非連結を止めました。
そうすることで、全てのコンボボックスの値が同じになってしまうという現象は無くなりす。
コンボボックスから他のテキストボックスに値を代入
コンボボックスにクエリやテーブルを使っている場合は、下記の参考サイトのような簡単な方法で別のテキストボックスに値を代入することができます。
しかし、ちょとした選択にテーブルを1個作成するのに抵抗があったので、コンボボックスには直接値を設定しました。
あとは、コンボボックスで値を選択した後に、VBAで値を代入すればOKです。
しかし・・・うまく値が代入されません。
Meの使い方が分からない?
最初は下記のVBAコードで実行したら、エラーは出ませんが、値が入力されません。
Private Sub authority_AfterUpdate() If authority = "管理者" Then auth_no = 1 ElseIf authority = "作業者" Then auth_no = 2 ElseIf authority = "閲覧者" Then auth_no = 3 Else MsgBox "エラー発生!管理者に連絡してください。 " End If End Sub
次にMeにドットを付けて実行しましたが、やっぱりダメでした。
そして、次に、Meに!を付けたらうまく行きました。
この3パターンの違いが分からないので、もう一度最初からやってみることにしました。
あれ!?
ココに注意
Meを付けなくても最初のコードで動くじゃないですか!?
意味不明!?原因不明です!
ま、とりあえず目的は達成したので良しとしますが、この教訓から、値が代入されなかったらMe.かMe!をつけてみろっていう曖昧な事しか言えませんね。
あーーーはっきりしませんが・・・仕方ないです!