操作画面用のオブジェクト、関数、名前定義を設定する

検索画面とオブジェクトを以下のように準備します。

図5.検索画面の準備

図6.オブジェクトのプロパティ

[開発]タブの[挿入]ボタンをクリックし、[ActiveXコントロール]のコンボボックスを2つ作成します。[cbSearchIndex]は商品種別の選択用、[cbSort]はソート順の選択用です。それぞれ右クリックして[プロパティ]をクリックし、以下のように設定します。これにより、セル範囲ItemGroupList/SortTypeTableJPから選択肢を表示し、選択した値がItemGroup/SortTypeセルに反映されます。

表10.コンボボックスのプロパティ設定

オブジェクト名 cbSearchIndex cbSort
LinkedCell ItemGroup SortType
ListFillRange ItemGroupList SortTypeTableJP

続いて、コマンドボタンを3つ作成します。プロパティは以下のように設定してください。[cbNext]と[cbPrev]は無効化しておきます。

表11.コンボボックスのプロパティ設定

オブジェクト名 cbSearch cbNext cbPrev
Caption 検索する 次の10件 前の10件
Enabled True False False

次に、商品種別に応じて検索項目名、取得データ項目名を切り替えられるよう、ワークシート関数を設定します。

A2~A5セルには、「=INDEX(SearchKeyTableJP,ROW()-1,ItemGroupIndex)」を設定します。INDEX関数は、セル範囲のデータの中から指定した行、列のデータを返す関数です。第1引数にセル範囲、第2引数に行、第3引数に列を指定します。これにより、検索項目名の表を格納したSearchKeyTableJPセル範囲から、商品種別に対応した項目名を表示できます。なお、ROW関数は引数を指定しない場合、自分のセルの絶対行を返します。ROW()-1を行に指定することにより、A2~A5セルにそれぞれ1~4の値が返され、対応する項目名を表示できます。

A7~E7セルには、「=INDEX(ResItemTableJP,ItemGroupIndex,COLUMN())」を設定します。これにより、取得データ項目名の表を格納したResItemTableJPセル範囲から、商品種別に対応した項目名を表示できます。なお、COLUMN関数は引数を指定しない場合、自分のセルの絶対列を返します。COLUMN()を列に指定することにより、A7~E7セルに1~5の値がそれぞれ返され、対応する項目名を表示できます。

最後に、取得データ表示のため、以下のようにセルの名前定義をしておきます。

表12.取得データ表示用のセルの名前定義

セルの名前定義 説明
SearchValueList 検索条件の入力用(4行分)
TotalResults 検索結果の総件数を表示する
CurrentPage 検索結果の表示ページを表示する
TotalPages 検索結果の総ページ数を表示する
ResValueTable 検索結果の詳細を表示する(10行固定)