多くのテンプレートやWebフォームでは、Wordのフォームフィールドを使用してユーザーから情報を入力しています。あるフィールドの選択によって別のフィールドの内容が決まる場合もあります。VBAプロシージャでリスト項目をハードコードし、二次(従属)リストに入力することも可能です。あるいは、データベースから適切なリスト項目を取得することもできます。後者はより動的ですが、より多くのコードとデータベースが必要になります。この例では、よりシンプルなソリューションを採用し、項目をハードコードすることにします。
詳細はこちら: Office 365 コンシューマー向け価格と機能
この従属リストソリューションを説明するために、まずプライマリリストに地域項目(北、南、東、西)を入力します。次に、VBAのSelect Caseステートメントを使用して、選択した地域のいくつかの州をセカンダリリストに入力します。まず、ユーザーフォームを作成し、以下のようにいくつかのフォームフィールドを追加します。
- Word で空白の文書を開き、[開発] タブをクリックします。([開発] タブを有効にする方法がわからない場合は、「方法: リボンに [開発] タブを表示する」を参照してください。)
- コントロール グループで、レガシー フォーム ドロップダウンをクリックし、ドロップダウン フォーム フィールドを選択します。
- 手順 2 を繰り返して、2 番目のドロップダウン フィールドを追加します。
(Word 2003 をまだ使用している場合、手順は似ていますが、コントロールにアクセスするには [フォーム] ツールバーを表示する必要があります。そのためには、[表示] メニューから [ツールバー] を選択し、[フォーム] を選択します。)
参照: ダウンロード: Excel スキルを磨く 10 のパワーヒント (TechRepublic)
これで、次のように、最初のドロップダウンに地域項目を入力する準備が整いました。
- リージョン ドロップダウン フィールドを右クリックし、表示されるサブメニューから [プロパティ] を選択します。
- ドロップダウン項目コントロールに「北」と入力し、「追加」をクリックします。これを繰り返して、「南」、「東」、「西」を追加します。
- ブックマークコントロールに「ddRegion」と入力します。この手順は必ず実行してください。この種のテクニックに関するメールを受け取る際、読者がこの手順を見逃しているケースがほとんどです。ドロップダウンフィールドの名前を変更する必要はありません。デフォルトのままでも構いませんが、分かりやすく意味のある名前を付けると、コードのメンテナンスが容易になります。
- [OK]をクリックします。
次に、州のドロップダウン フィールドを右クリックし、ddState という名前を付けます (最初のドロップダウンに ddRegion という名前を付けたときと同じように、ブックマーク コントロールを使用します)。[OK] をクリックしてダイアログ ボックスを閉じます。
この時点で、ddRegionという名前のドロップダウンが1つ作成されており、ddStateという名前のドロップダウンはまだ空です。ddStateにデータを入力するには、以下のVBAプロシージャを追加します。
- [Alt]+[F11]キーを押してVisual Basic Editor (VBE)を起動します。
- [挿入]メニューから[モジュール]を選択します。
- 以下に示す PopulateddState サブプロシージャを入力します。
- 標準ツールバーの [保存] をクリックし、[はい] をクリックします。
- Word 文書に戻ります。
Sub PopulateddState()
Select Case ActiveDocument.FormFields("ddRegion").Result
Case "North"
With ActiveDocument.FormFields("ddState").DropDown.ListEntries
.Clear
.Add "Michigan"
.Add "Ohio"
End With
Case "South"
With ActiveDocument.FormFields("ddState").DropDown.ListEntries
.Clear
.Add "Georgia"
.Add "Texas"
End With
Case "East"
With ActiveDocument.FormFields("ddState").DropDown.ListEntries
.Clear
.Add "New York"
.Add "Maine"
End With
Case "West"
With ActiveDocument.FormFields("ddState").DropDown.ListEntries
.Clear
.Add "California"
.Add "Oregon"
End With
End Select
End Sub
もうすぐ完了です。次のように、状態ドロップダウンに、追加した新しいプロシージャを実行するように指示する必要があります。
- ddRegion を右クリックし、[プロパティ] を選択します。(または、[開発] タブの [コントロール] グループで [プロパティ] をクリックします。)
- [終了] ドロップダウンから [PopulateddState] を選択します。
- [OK]をクリックします。
最後にもう1つ。フィールドを使用する前に、以下の手順で保護を有効にしてください。
- [開発]タブをクリックし、[保護グループ]の[編集の制限]をクリックします。
- 表示されるタスク ウィンドウで、[2. 編集の制限] の下の [許可する操作] オプションをクリックし、そのオプションのドロップダウンから [フォームへの入力] を選択します。
- 次に、「3. 適用の開始」の「はい、保護の適用を開始します」をクリックします。
- 同じパスワードを2回入力し、「OK」をクリックします。
後はフィールドを使うだけです。地域フィールドのドロップダウンをクリックし、「South」を選択します。するとサブプロシージャ(マクロ)PopulateddStates()が実行され、州のドロップダウンにGeorgiaとTexasが入力されます。
リスト項目はハードコードされていることに注意してください。この方法は確かに簡単ですが、その簡単さゆえに限界もあります。既知の項目の静的なリストで最も効果的に機能します。
このテクニックを理解するのに役立つデモ Excel ファイルが用意されています。