| すぐマク YNxv9g0344 | Home | Search | Contents | Gallery | Introduction | Service | Support | What's New! |
|
コンボボックスの選択結果からまとめた情報を縦方向のセルに表示したいが? (一定のセルが選択されたらコンボボックスを表示する) |
|
|
|||
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) ※ 一旦、ブックをハードディスクに保存し、後で改めて開いてから実行してください。 関連ページ 自動記録した範囲指定のコードを変数指定に修正するには? |
| http://www.geocities.jp/happy_ngi/ | Home | Contents | Gallery | Introduction | Service | Support | What's New! |