トップ > スキル : アプリケーション > VBA for Access > 応用編(VBAでコントロール操作)
並べ替えの順を切り替える
コマンドボタンをクリックして、レコードの順番を変更することができます。使用するフォームは「F_顧客リスト」です。

開いた直後は、[顧客ID]の昇順で並んでいます。フリガナ順にしたい場合、優先区分順にしたい場合、そして元に戻すリセットの各コマンドボタンを配置して、プロシージャを作成します。
並べ替えをしたい場合は、OrderByプロパティとOrderByOnプロパティを使用します。
◆ OrderByプロパティ
【書式】
オブジェクト名.OrderBy = 並べ替えの対象となるコントロール名[,並べ替え方法]
- 並べ替え方法:昇順であればASC、降順であればDESCを指定。省略の場合は昇順となります。
このプロパティは、フォーム、レポート、テーブル、クエリでのレコードの並べ替える方法を取得、設定します。
◆ OrderByOnプロパティ
【書式】
オブジェクト名.OrderByOn = 値
- 値:並べ替えを有効にする場合はTrue、無効にする場合はFalseを指定。
このプロパティは、OrderByプロパティで設定したことを有効にするかどうかを指定します。たいていの場合は、OrderByプロパティと併せて記述します。
まず、[フリガナ順]コマンドボタンのクリック時のイベントプロシージャを作成します。
Private Sub フリガナ順_Click() Me.OrderBy = "フリガナ" Me.OrderByOn = True End Sub
動作を確認すると、フリガナ順に並べ替えられます。

次に、[優先区分順]コマンドボタンのクリック時のイベントプロシージャを作成します。
Private Sub 優先区分順_Click() Me.OrderBy = "優先区分" Me.OrderByOn = True End Sub
動作を確認すると、優先区分順に並べ替えられます。

次に、[リセット]コマンドボタンのクリック時のイベントプロシージャを作成します。
Private Sub リセット_Click() Me.OrderBy = "顧客ID" Me.OrderByOn = True End Sub
動作を確認すると、顧客IDの順に並べ替えられます。

表示レコードの切り替え
フォーム上のリストボックスからあるデータを選択すると、そのレコード一覧が別のコントロールに表示することができます。
「F_見積一覧」フォームのリストボックスの見積IDを選択すると、下のコントロールにその見積IDのレコードが表示されるような仕組みを作成します。
- [lst見積NO]リストボックスから番号を選択(クリック時イベント)
- [見積NO]テキストボックスにフォーカスを移動
- 選択した番号のデータを検索して表示

フォーカスを移動する時は、SetFocusメソッドを使用します。
◆ SetFocusメソッド
【書式】
オブジェクト名.SetFocus
このメソッドには引数はありません。
指定したオブジェクト(フォームやコントロールなど)にフォーカスを移動します。
ちなみに、「フォーカス」とは現在選択されていて、入力可能な状態のコントロールのことです。
指定した条件でレコードを検索する時は、FindRecordメソッドを使用します。
◆ FindRecordメソッド
【書式】
DoCmd.FindRecord 検索値[,検索条件][,大文字小文字の区別][,検索方法][,表示形式の使用][,カレントフィールドのみ検索][,レコードの先頭から検索]
- 検索値:検索対象になるデータを指定。
- 検索条件:検索条件をフィールドの一部分(acAnywhere)、フィールド全体(acEntire)、フィールドの先頭(acStart)の中から指定します。省略時は、フィールド全体になります。
- 大文字小文字の区別:大文字小文字を区別する場合はTrue、しない場合はFalseを指定。省略時は、区別しないとなります。
- 検索方法:検索方法を下へ(acDown)、すべてのレコード(aSearchAll)、上へ(acUp)から指定。省略時は、すべてのレコードとなります。
- 表示形式の使用:表示形式を使って検索する時はTrue、しない時はFalseを指定。省略時は、検索しないとなります。
- カレントフィールドのみ検索:カレントフィールドのみ検索する時はacCurretn、すべてのフィールドの時はacAllを指定する。省略時は、カレントフィールドのみとなります。
- レコードの先頭から検索:レコードの先頭から検索する時はTrue、カレントレコードの次から検索する時はFalseを指定。省略時は、先頭から検索となります。
フォーム「F_見積一覧」のリストボックス(lst見積NO)のクリック時のイベントに以下のようなプロシージャを作成します。
Private Sub lst見積NO_Click() Me![見積NO].SetFocus DoCmd.FindRecord lst見積NO, acEntire, False, , _ False, acCurrent, True End Sub
動作を確認します。見積NOのリストボックスの任意の番号を選択します。選択した番号に対応したレコードが下の見積NO、商品名、顧客名のテキストボックスに表示されます。

リストボックスの内容を切り替える
切り替えようのコマンドボタンをクリックすると、それに応じたデータを表示させることができます。
フォーム「F_見積一覧」の「見積済み」「受注済み」「検収済み」の3つのコマンドボタンが配置されています。それぞれのコマンドボタンを押すと、それに応じた見積NOがリストボックスに表示されるようにします。
ただし、見積済み、受注済み、検収済みの見積NOはクエリを利用して取得します。
リストボックスやコンボボックスの一覧を取得する時は、RowSourceプロパティを使用します。
◆ RowSourceプロパティ
【書式】
オブジェクト名.RowSource ソース元
- ソース元:一覧に表示させる元のテーブル名、またはクエリ名など。
各コマンドボタンのクリック時のイベントに以下のようなプロシージャを作成します。
Private Sub 見積済み_Click() Me!lst見積NO.RowSource = "Q_見積済み" End Sub Private Sub 受注済み_Click() Me!lst見積NO.RowSource = "Q_受注済み" End Sub Private Sub 検収済み_Click() Me!lst見積NO.RowSource = "Q_検収済み" End Sub
動作を確認します。
「見積済み」コマンドボタンをクリックすると、見積受付の番号が表示されます。一般的にすべてのレコードの見積NOが表示されます。

「受注済み」コマンドボタンをクリックすると、注文書受付のデータがある番号だけが表示されます。

「検収済み」コマンドボタンをクリックすると、検収書の受付にデータがある番号だけが表示されます。

場面に応じて、表示させるレコード一覧を選択できます。