MS Access Tips/Sample and VBA and Blog customize etc...

複数選択リストボックスで選択したレコードの印刷

リストボックスでアイテム(レコード)を複数選択して、選択したレコードのみをレポートで印刷する方法です。

下記の回答用にサンプルを作成したのでアップしておきます。

access初心者です。- Yahoo!知恵袋

複数選択リストボックスによるフィルタ

難易度:

仕様、フォーム設計

複数選択リストボックスのフォーム

「仕入先マスター」テーブルをレコードソースとするレポートがあるとします。

仕入先マスター(仕入先コード、仕入先名、担当者、・・・・)

リストボックス名は listSupplier とします。
値集合ソースはレポートのレコードソースと同じ「仕入先マスター」テーブルとします。
連結列は、主キーの「仕入先コード」(数値型)とします。
「複数選択」プロパティは「標準」または「拡張」にして複数選択できるようにしておきます。
列数、列幅とお好みで。列見出しは「はい」とします。

コマンドボタンを3つ配置して、
名前 cmdClearSelect
標題 選択解除

名前 cmdAllSelect
標題 全て選択

名前 cmdPreview
標題 レポートを開く

cmdPreviewをクリックするとリストボックスで選択した仕入先のみを抽出してレポート出力します。

さらにテキストボックスを2つ配置して、下記のように設定します。

コントロールソース =[listSupplier].[ListCount]-1
名前 txtCount

コントロールソース =[listSupplier].[ItemsSelected].[Count
名前 txtSelCount

VBAコード

それぞれのコマンドボタンのクリック時のイベントプロシージャは下記のようになります。

解説

複数選択可能のリストボックスの基本的な使用例といえます。

選択しているアイテムにアクセスするには、ItemsSelectedプロパティを使います。ItemsSelectedコレクションには、選択されたアイテムのインデックスが格納されいます。For Each でそれを1つずつ取り出せます。ItemData を使ってそのインデックスの値を取得できます。

For Each ループ内で、取り出した選択した値を、カンマ区切りで連結していきます。それをIn演算子にいれて抽出条件とします。その抽出条件をレポートを開くコマンドの引数に設定します。

アイテムを選択したり、選択解除するには、Selectedプロパティを使用します。引数にイデックスを指定して、Trueを代入すれば選択されて、Falseを代入すれば選択が解除されます。(cmdClearSelect_Click、cmdAllSelect_Click)

ListCountプロパティでリストボックスの行数を取得できます。「列見出し」が「はい」のときは、実際のデータ件数は -1 する必要があります。

選択されている件数は、ItemsSelected.Count で取得できます。

サンプルファイルが下記からダウンロードできます。
FrmMultiSelectListbox_07.zip (Access 2007-2010 形式 - 36kb)
FrmMultiSelectListbox.zip (Access 2002-2003 形式 - 32kb)
FrmMultiSelectListbox_2k.zip (Access 2000 形式 - 32kb)


拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/452-afaca37d
該当の記事は見つかりませんでした。