トップ > スキル : アプリケーション > VBA for Access > 応用編(VBAでコントロール操作)

VBA_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のレコードが表示されるような仕組みを作成します。

  1. [lst見積NO]リストボックスから番号を選択(クリック時イベント)
  2. [見積NO]テキストボックスにフォーカスを移動
  3. 選択した番号のデータを検索して表示

フォーカスを移動する時は、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が表示されます。

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

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

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