Access VBAでコンボボックスを初期化する方法|実務で使えるコード例付き
Microsoft Accessでフォームを作成していると、検索条件の選択、マスタ入力、連動フォーム、絞り込み画面などでコンボボックスを使う機会が非常に多くあります。
そして実務では、そのコンボボックスを「初期化したい」と思う場面が頻繁に出てきます。
たとえば、次のようなケースです。
-
検索条件をすべてクリアしたい
-
フォームを開いた直後に未選択状態に戻したい
-
登録完了後に入力欄をリセットしたい
-
親コンボの変更に応じて子コンボを初期化したい
-
再検索前に前回の値を消したい
-
コンボの候補一覧も再読み込みしたい
Accessでは一見単純そうに見える「コンボボックスの初期化」ですが、実際には状況によって意味が少し異なります。
たとえば、
-
選択されている値だけ消したいのか
-
表示テキストも完全に空にしたいのか
-
候補一覧自体を更新したいのか
-
連動している他のコントロールも一緒にクリアしたいのか
によって、書くべきVBAコードが変わります。
さらに、初心者のうちは次のような疑問も持ちやすいです。
-
Nullを入れるのと""を入れるのは何が違うのか -
.Value = Nullと.Text = ""はどう使い分けるのか -
リストの中身を再取得したいときはどうするのか
-
連続フォームやサブフォームではどう書くのか
-
エラーにならない安全な書き方はあるのか
-
実務ではどのイベントに書くことが多いのか
この記事では、Access VBAでコンボボックスを初期化する方法について、基本から実務的なパターンまでできるだけわかりやすく解説します。
単に「値を消すコード」を紹介するだけでなく、なぜその書き方をするのか、どの場面で何を選ぶべきかまで丁寧に整理していきます。
Accessのコンボボックスとは何か
まず前提として、Accessのコンボボックスは、候補の一覧から値を選択できる入力コントロールです。
テキストボックスに似ていますが、ドロップダウンリストを持っている点が大きな特徴です。
よくある用途は次のとおりです。
-
顧客名の選択
-
商品カテゴリの選択
-
部署の選択
-
ステータスの選択
-
検索条件の指定
-
IDと表示名を分けた入力
Accessでは、コンボボックスに対して次のような設定を行うことが多いです。
-
値集合ソース
-
行ソース
-
連結列
-
列数
-
列幅
-
入力規則
-
リスト項目のみ許可
そのため、「初期化する」と言っても、単に画面上の見た目を空にするだけではなく、
内部で持っている値をどう扱うか
も重要になります。
コンボボックスを初期化するとはどういう意味か
Access VBAで「コンボボックスを初期化する」と言う場合、実際には次のどれかを意味していることが多いです。
1. 選択されている値を消す
現在選ばれている値を未選択状態に戻すことです。
2. 表示内容を空にする
見た目として空欄に戻すことです。
3. 候補リストを再読み込みする
コンボの一覧そのものを最新状態に更新することです。
4. 関連コントロールもまとめてリセットする
親コンボ・子コンボ・テキストボックス・チェックボックスなどを一括初期化することです。
5. 既定値の状態へ戻す
完全な空欄ではなく、「未選択」や「全件」など、あらかじめ決めた初期状態へ戻すことです。
つまり、実務では「初期化」という言葉が曖昧になりやすいので、
何をどこまで戻したいのか
を最初に整理することが大切です。
最も基本的な初期化方法
Access VBAでコンボボックスの選択値を初期化する最も基本的な方法は、Null を代入することです。
基本コード
例
これで、cboDepartment というコンボボックスの選択を未選択状態に戻せます。
なぜNullを使うのか
Accessのコンボボックスは、通常「値が入っていない状態」を表すのに Null を使います。
空文字 "" を入れるのではなく、値なしの状態として Null を設定する方が自然なケースが多いです。
実際にボタンから初期化する例
実務では、「クリア」ボタンや「条件リセット」ボタンから初期化することがよくあります。
例: 1つのコンボボックスを初期化する
Me!cboDepartment = Null
End Sub
このコードは、ボタンを押したら cboDepartment の選択値を消します。
複数のコンボボックスをまとめて初期化する方法
検索フォームや入力フォームでは、コンボボックスが複数あることが一般的です。
その場合は、まとめて Null を代入します。
例
Me!cboDepartment = Null
Me!cboEmployee = Null
Me!cboStatus = Null
End Sub
これで複数のコンボボックスを一括で初期化できます。
コンボボックスと他コントロールをまとめて初期化する例
実務では、コンボボックスだけでなく、テキストボックスやチェックボックスも一緒に初期化したいことがあります。
例
Me!cboDepartment = Null
Me!cboEmployee = Null
Me!txtKeyword = Null
Me!chkActive = False
End Sub
ポイント
-
コンボボックス →
Null -
テキストボックス →
Null -
チェックボックス →
False
このように、コントロールの種類ごとに適切な初期化方法を使います。
Null と "" の違い
これは初心者が特につまずきやすいポイントです。
Null
値が存在しない状態です。
""
空文字です。
つまり「長さ0の文字列」が入っている状態です。
Accessでは、コンボボックスを未選択状態に戻したいなら、基本的には Null を使うことが多いです。
例
一方で、次のような書き方は状況によっては適しません。
この場合、コンボボックスの行ソースや設定によっては、
-
空文字が有効値として扱われる
-
型不一致になる
-
リスト項目のみ許可でエラーになる
などの可能性があります。
実務上の基本
コンボボックス初期化は Null を使う
と覚えるのがわかりやすいです。
Si quieres conocer otros artículos parecidos a Access VBAでコンボボックスを初期化する方法|実務で使えるコード例付き puedes visitar la categoría Webukaihatsu.
