- ベストアンサー
アクセス(Access)でDropdownが表示されない
次のとおりコンボボックスが自動的に表示されるようにしています。 Private Sub コンボ1_Enter() Me!コンボ1.Dropdown End Sub テキスト2にマクロ(コンボ1にコントロールの移動)を設定しておくと、 テキスト1からエンターキーを押して、テキスト2に移動した後、 すぐにコンボ1に移動するのですが、 その時コンボボックスが自動的に表示されません。 このような場合は、どうすればいいのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Accessのフォーカス取得時(Enter)イベントやフォーカス取得後(GetFocus)イベントは、 ユーザーによる直接操作以外によるコントロールの移動(=マクロでの移動)では 発生しなかったと思います。 従って、コンボ1への移動をマクロで行った場合は、そのマクロにDropDownも 組み込んでやる必要があります。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ただ、もしも、そのフォームでTabキーを押した場合のコントロール移動が、「テキスト1 →テキスト2→コンボ1」となっている(=「テキスト1→テキスト2→テキスト3→コンボ1」と いったように、間に、タブ移動が必要になる他のコントロールが入っていない)場合は、 テキスト2の『タブストップ(TabStop)』の設定を「いいえ(False)」に設定してやるのが よいと思います。 フォームのデザインビューでの、コントロールの『タブストップ』の設定方法: 1)フォームをデザインビューで開く 2)テキスト2をダブルクリックするなどして、テキスト2のプロパティシートを開く 3)プロパティシートの『その他』タブを選択 4)『タブストップ』の値を「いいえ」に設定 5)フォームを保存して閉じる また、あるコントロールの値によっては「テキスト2」に移動することもあるという場合は、 マクロなどで『TabStop』の値を切り替えてやることもできます。 例えば、「テキスト1が空白(Null)ならコンボ1に移動/テキスト1に入力があるなら テキスト2に移動」という場合は、テキスト1の更新後(AfterUpdate)イベントに以下の ようなコードを記述します: Private Sub テキスト1_AfterUpdate() テキスト2.TabStop = (IsNull(テキスト1) = False) End Sub なお、テキスト2への入力や、その値をコピーをすることがありえないのであれば、 テキスト2を使用不可(プロパティシートの『データ』タブで設定。マクロで指定する場合は 「テキスト.Enabled」)にしてしまう手もあります。
お礼
ご回答ありがとうございました。 テキスト2には、テキスト1に入力された値に基づき、 決められた数字しか入らない設定にしているため、 テキスト2のプロパティで、タブストップの設定を「いいえ」 にすると「コントロールの移動」の設定を行う必要がないため、 希望通りの操作を行うことができました。 また、テキスト2の「使用可能」を「いいえ」にし、 「編集ロック」を「はい」にすることでも、 テキスト2の値をコピーすることはできませんが、 希望通りの操作を行うことができました。 なお、私のやり方が悪かったからかもしれないのですが、 VBAで「値の入力→コントロールの移動→Dropdown」 の設定をしてみましたが、結果はダメでした。 とても勉強になりました。 本当にありがとうございました。