[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数のリストボックスの連携?』(りー)
さっそくですが・・・
たとえば 一つ目のリストとして (あ) (か) (さ) (た) (な) の5種類
あとのリストとして (あ)に対しては(い)(う)(え)(お)
(か)に対しては(き)(く)(け)(こ)
(さ)に対しては(し)(す)(せ)(そ)
(た)に対しては(ち)(つ)(て)(と)
(な)に対しては(に)(ぬ)(ね)(の)
このようなリストがあるとします。 他のシートのセルA1に(せ)を入力したい時に カーソルをA1に合わせて1つ目のリストで(さ)を選ぶと 次に選択できるものとして(し)(す)(せ)(そ)がリストとして 現れるようなことはできますか? イメージとしてはA1を選ぶと(あ)(か)(さ)(た)(な)の選択項目が出てきて その中の(さ)を選ぶとさらに(し)(す)(せ)(そ)の選択項目が出てくる といったものを想像しているのですが・・・・ 過去ログをリストでしぼってみてみたのですが なかなか思っているのと同じようなのがありませんでした。 よろしくお願いします。
大サービスです。 昨日、仕事で作りました。
お望みのものとは若干違いますが・・・。 ↓をシート1のA1から貼り付けます。
あ あ か さ た な は ま や ら わ か い き し ち に ひ み ゆ り を さ う く す つ ぬ ふ む よ る ん た え け せ て ね へ め れ な お こ そ と の ほ も ろ は ま や ら わ
で、ユーザーフォームにリストボックスを2つ設置します。
以下はユーザーフォームのモジュールに貼り付けます。
Private Sub UserForm_Initialize() Dim i As Integer For i = 1 To 10 Me.ListBox1.AddItem Worksheets(1).Cells(i, 1).Value Next i End Sub
Private Sub ListBox1_Change() Dim r As Range Me.ListBox2.Clear Me.ListBox3.Clear Set r = Worksheets(1).Range("B1:K1").Find(what:=Me.ListBox1.Value, LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByColumns) Set r = Worksheets(1).Range(r, r.End(xlDown)) Me.ListBox2.List = r.Value End Sub
ユーザーフォーム表示時にListBox1に「あかさたなはまやらわ」が表示され、 ListBox1の、たとえば「あ」をクリックするとListBox2に、 「あいうえお」と表示されます。
(MARBIN)
入力規則のリストを使う場合、 INDIRECT関数を使う、というのもあったような気がします。 (MARBIN)
名前「あ」→(い)(う)(え)(お) 「か」→(き)(く)(け)(こ) 「さ」→(し)(す)(せ)(そ) 「た」→(ち)(つ)(て)(と) 「な」→(に)(ぬ)(ね)(の) ↑のように、名前の定義をして「(あ)(か)(さ)(た)(な)」を 入力規則のリストで設定したセルが「A1」としたら、=INDIRECT($A$1)
(Ohagi)
ありまひた。
http://www.kenzo30.com/ex_kisopoint/onepoint_sonota3.htm#Q4
(MARBIN)
UserForm に ListBox を2つ(ListBox1, ListBox2)配置 Project explorer の UserForm1 のアイコンを右クリックして下記コードを貼り付け
Private dic As Object
Private Sub UserForm_Initialize() Dim r As Range Set dic = CreateObject("Scripting.Dictionary") With Sheets("sheet1") '<- change to suite With .Range("a1").CurrentRegion For Each r In Range(.Columns(1).Address) If Not dic.exists(r.Value) Then dic.add r.Value, r.Resize(,.Columns.Count-1).Offset(,1).Value End If Next End With End With ListBox1.List = dic.keys End Sub
Private Sub ListBox1_Click() ListBox2.Clear With ListBox1 If .ListIndex = -1 Then Exit Sub ListBox2.List = dic(.Value) End With End Sub (seiya)
りー
1) まず、どのコードを使用しているのかを明確にしてください。
2) どのタイミングでListBox1/ListBox2 の値をどのシートのどこへ転記したいのか?
(seiya)
食品を入力したいのはC4からC39です。
食品の分類(リストボックス1)→野菜類 肉類 豆類 海藻類 とあって
それぞれ(リストボックス2)野菜類には人参 かぼちゃ たまねぎ きゃべつ
肉類には牛肉 豚肉 鶏肉 鴨肉
豆類には 大豆 ひよこ豆 あずき 枝豆
海藻類には わかめ くきわかめ ひじき など
で、セルC4にカーソルを合わせリストボックス1で野菜類を選ぶとリストボックス2で人参 かぼちゃ たまねぎ きゃべつ
という選択肢が出てきて、人参を選択するとC4に入力できる。
C5にカーソルをもってきてそれぞれのリストボックスで選択するとC5に入力と
いった感じにしたいのです。
りー
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.