コンボボックスの選択結果からまとめた情報を縦方向のセルに表示したいが?

(一定のセルが選択されたらコンボボックスを表示する)
Question 62.3 Previous Next
Question 32.1 コンボボックス・コントロールに関して質問です。
殆どの参考集のようにセルに入力された値に対応するコンボボックスを表示するのは横表示になっています。 現在作りたいものが表示を
縦にしたいのですが、どのようになるのでしょうか。

例えば、それぞれのコンボボックスの中からA社の旅行ブランやB社旅行ブランを選ぶと、下にその会社のプラン内容が横表示ではなく、縦表示でてくるというものです。
コンボボックスの内容をA社ロサンゼルスツアー A社イギリスツアー B社ロサンゼルスツアー B社イギリスツアーとします。 コンボボックスからA社ロサンゼルスツアーをA1のセルで選んだら、値段がA2に、飛行機の種類がA3に、、、同じくB1のセルでB社のイギリスツアーを選んだら、B2に値段、B3に飛行機の種類、、、というようにです。

Question 32.1を参考にしてみようとしましたが "リストのセルのところや" などどうしたらいいのかわからずできません。 初歩的な質問でもうしわけありませんが、よろしくお願いいたします。
Answer   Copyright (C) 2003.8.29 永井善王
FAQの「Question 32.1 コンボボックス・コントロール」とは、セルに入力された値に対応するコンボボックスを表示したいが? のことで、右図のように、ActiveXコントロールのコンボボックスをワークシートに作成しています。
くわしいことは、そちらで見ていただくことにしますが、そのコンボボックスのリストに表示するための元データは、下図のとおり別のワークシートに作成しています。

回答に入りたいのですが、あなたのご希望を十分に理解できません。
質問文を一生懸命書いていただいたかと思いますが、すみません。

「縦にしたい」のはコンボボックスのリストでしょうか、それとも、コンボボックスでの選択結果から作成するワークシートでしょうか?

A. たとえば、上右図にあるような、コンボボックスのドロップダウン表示しているリストを、縦表示(縦書き)にしたいということであるならば、それは不可能と思います。 (ActiveXコントロールの仕様にないので)

B. それとも、上右図のワークシートのセルの縦横(行列)を入れ替えたようなもの、つまり、右図のようなワークシートを作りたいということでしょうか?
以下は、この B. についての解説です。意味を取り違えていたらごめんなさい。

作成方法
1. コンボボックスのリストに表示するためのデータを作成する(Sheet3)

     2. ユーザーフォームにコンボボックスを作成する

3. ワークシート(Sheet1)のコード画面で、選択範囲が変更されたときに発生する SelectionChangeイベントを利用す
るマクロを、下記のように作成する … このマクロは A1 または B1セルが選択されると、右図のように、自動的にユーザーフォームを表示する
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Row <> 1 Then                 '1行目でないなら
        Exit Sub
    Else
        If Target.Column > 2 Then           'B列より右列なら
            Exit Sub
        Else
            列 = Target.Column              '選択された列番号を取得する
            UserForm1.Left = 100 * 列 - 60 '左端からの距離を設定する
            UserForm1.Show                  'ユーザーフォームを表示する
        End If
    End If
End Sub
4. ユーザーフォームのコード画面で、コンボボックスの値が変わったときに発生する Changeイベントを利用するマクロを作成する … このマクロは Sheet1の選択された列の1、2、3行目のセルへ、選択された旅行プラン、それに対応する値段と飛行機の種類をセットする
Private Sub ComboBox1_Change()
    Cells(1, 列) = ComboBox1.Text    'Sheet1のn1セルへコンボボックスのテキストをセット
    行 = ComboBox1.ListIndex + 2            'リストの中で現在選択されている行番号
    Unload Me                               'ユーザーフォームを削除する
    Worksheets("Sheet3").Range("B" & 行).Copy Destination:= _
    Worksheets("Sheet1").Range(Cells(2, 列), Cells(2, 列))
                                            'n2セルへSheet3のBnセルをコピー
    Worksheets("Sheet3").Range("C" & 行).Copy Destination:= _
    Worksheets("Sheet1").Range(Cells(3, 列), Cells(3, 列))
                                            'n3セルへSheet3のCnセルをコピー
End Sub
5. 同じ画面で、ユーザーフォームの Initializeイベントマクロを作成する … このマクロは ユーザーフォームを画面表示する位置と、コンボボックスのリストのソース範囲を設定する
Private Sub UserForm_Initialize()
    UserForm1.StartUpPosition = 0           '表示位置は手動設定
    UserForm1.Top = 100                     '上端から 100
    UserForm1.Left = 40                     '左端から 40
    UserForm1.ComboBox1.RowSource = "Sheet3!A2:A5" 'リストのソース
End Sub
6. 標準モジュールの Module1のコード画面で、変数を定義する
Option Explicit
Public 列
サンプルブックのダウンロードは ここをクリック(YNxv9g0344_Plan.xls 50KB)
※ 一旦、ブックをハードディスクに保存し、後で改めて開いてから実行してください。
関連ページ 
自動記録した範囲指定のコードを変数指定に修正するには?

Excel VBA Macro