操作画面用のオブジェクト、関数、名前定義を設定する
検索画面とオブジェクトを以下のように準備します。
[開発]タブの[挿入]ボタンをクリックし、[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行固定) |