[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『品名によってリストボックスを使い分けたい』(@浪人中)
以下のようにセルA1には「肉」と入力してセルA2以下に具体的な肉の名前を、
同様にセルB1には「野菜」と入力してセルB2以下に野菜の名前を入力しておきます。
A B 1 肉 野菜 2 牛肉 ニンジン 3 豚肉 玉ねぎ 4 鶏肉 ジャガイモ
リストボックスを利用して上記の肉と野菜の名前を入力したいのですが、リストボックス
を二個用意して以下のような2段階の入力をしたいのです。
1.最初のリストボックスで「肉」か「野菜」かどちらかを選択する。
2.最初のリストボックスで「肉」を選択した場合は二番目のリストボックスにセルA2〜A4の 肉の名前だけが表示されて、そこから選択できる。
最初に「野菜」を選択したも同様に二番目のリストボックスには「野菜」の名前だけが
表示され、そこから選択出来る。
どうすれば上記のような入力方法が実現できるでしょうか。
お分かりの方いらっしゃれば教えてください。
C1を選択し、データ、入力規則、設定、リスト、元の値に=$A$1:$B$1 D1を選択し、同様にして、元の値を=INDEX($A$2:$B$4,,MATCH($C$1,$A$1:$B$1,)) では、どうでしょう? (LOOKUP)
以前私もここで教えて頂いたINDIRECTを使う方法です。 [[20031012231218]]『検収チェックリストの作成』(うえさん) (ケン)
「リストボックス」って、 1.ユーザーフォーム 2.コントロールツール 3.フォーム の3種類ありますよね。 でも、LOOKUPさんのは「入力規則のリスト」みたいだし。 どれでしょう。
とりあえずユーザーフォームであるとするなら、
Private Sub ListBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) Select Case Me.ListBox1.ListIndex Case Is = 0 Me.ListBox1.RowSource = "Sheet1!A2:A4" Case Is = 1 Me.ListBox1.RowSource = "Sheet1!B2:B4" Case Else End Select End Sub
コントロールツールのほうなら、
Private Sub ListBox1_Change() Select Case Me.ListBox1.ListIndex Case Is = 0 Me.ListBox2.ListFillRange = "Sheet1!A2:A4" Case Is = 1 Me.ListBox2.ListFillRange = "Sheet1!B2:B4" Case Else End Select End Sub
イベントの割り当てが適切かどうかちょっと不安ですがこんなところでしょう。 はずしてたらゴメンナサイ。 (KAMIYA)
おはようございます。 ユーザーフォームなら '------------------------ Private Sub UserForm_Initialize() With ListBox1 .AddItem "肉" .AddItem "野菜" End With End Sub
'ここから下はコントロールツールも共通 '----------------------------- Private Sub ListBox1_Click() If ListBox2.ListCount >= 1 Then Do While ListBox2.ListCount <> 0 If ListBox2.ListIndex = -1 Then ListBox2.ListIndex = _ ListBox2.ListCount - 1 End If ListBox2.RemoveItem (ListBox2.ListIndex) Loop End If i = 2 Select Case ListBox1.ListIndex Case 0 Do While Cells(i, 1) <> "" ListBox2.AddItem Cells(i, 1) i = i + 1 Loop Case 1 Do While Cells(i, 2) <> "" ListBox2.AddItem Cells(i, 2) i = i + 1 Loop End Select End Sub
と言う方法もありまっせ。 (弥太郎)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.