• 締切済み

ドロップダウンリストを使用して関連した値を入力したいです。

ドロップダウンリストを使用して関連した値を入力したいです。 Excel2007を使用していますが、 リストから項目を選択した時に、 各セルに選択した項目に関連する値を入力させたいです。 例えば、 リストから「ライオン」を選択した場合 A列1行目に「肉食」 A列2行目に「ネコ科」 A列3行目に「大型」 リストから「うさぎ」を選択した場合 A列1行目に「草食」 A列2行目に「うさぎ科」 A列3行目に「小型」 今はコンボボックスにドロップダウンリストを作成して一覧参照していますが、どう関連付けよいものか苦慮しております。 マクロを使わないと対処できない気もしますが、良い方法があれば教えてください。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

入力規則で(例)A列の値を択ぶと、B,C列はVLOOKUPで参照できるが、A列が同じで、B,C列が違うものがあると、A列が同じでB,C列が違うものは参照できない(このケースは実際は少なかろうが) マクロでやってみる。 入力規則のありがたみがわかる。 ーー VBAでは解説書に余り書かれていないという意味で、難しい。 例データ 3列の例 F1:H5 a x 1 b y 2 c z 3 d u 4 e v 5 を作っておく。 ーー コンボボックスをSheet1に1つ貼り付ける。 ーー エクセルではコンボの表示内容(選択肢)は FillListRangeのRange(セル範囲)で指定するのが本則。(入力規則のリストのあり場所も同じ考え)。 だからコンボの編集モードで、コンボで右クリックで択ぶと出る、「プロパティ」ウインドウで  FillListRangeの行に F1:H5 と手入力する(プログラムでも出来るが略)。 ほかにVBでやるような、セルと関係付けない、直接プログラム内での値で、指定方法もある(略)。 ーー また「プロパティ」ウインドウで ColumnCount 3   3列表示だから ColumnWidths 30;30;30(適当に)  3列のコンボの中での表示幅 を手入力する(プログラムで設定する方法もある(略)) ーー シートタブで右クリック。「コードの表示」を択んで出てくる画面で コンボのクリックイベントで Private Sub ComboBox1_Click() ComboBox1.Top = ActiveCell.Top ActiveCell = ComboBox1.List(ComboBox1.ListIndex, 0) ActiveCell.Offset(0, 1) = ComboBox1.List(ComboBox1.ListIndex, 1) ActiveCell.Offset(0, 2) = ComboBox1.List(ComboBox1.ListIndex, 2) ActiveCell.Offset(1, 0).Select End Sub ==== これで入力したい行の、入力したい3列の最左列を指定して、コンボの中から1つをクリックで択ぶ。 それで、3列に分かれて値がセットされるはず。 またその後、次の入力に備えて、直下行セルを選択する。 ーー ぎこちないがシートの入力セルが下の方にいくとコンボの表示位置を改める。 (この部分は改良の余地あると思うが、とりあえず) VBAの中級以上の課題かなと思う。

noname#126151
noname#126151
回答No.1

マクロでなくて リストの中のライオンを選択したらそりぞれのところに 該当するものを表示させたいということですよね その場合VLOOKUP関数でできますのでしてみてください 同じシートないの左側の部分にリストをつくり 回答をもとめるところにそのVLOOKUP関数をあてはめて つくれますよ これは自分で調べてください 間違いなくできますので またそのリストを参考にしてプルダウンリストをつくるには 入力させたいセルにエクセルのツールバーのデータをクリック 入力規則をクリック すべての値をクリック ソースのところで さきほどあなたが選択させたいリストの範囲を指定してOK これでできます これをマウスでセルの右下の太く十字の形にして下へ ドラッグすればリストからのプルダウンメニューはできます やってみてくださいね