|
▼レッズ命 さん:
こんにちは
上で質問させていただいていますが、それと並行して、一生懸命(?)コードを読んで
シートのイメージを想像し、そこでおやりになりたいことを、これまた想像。
【雑貨】を特別扱いしているところが、まだ読み取れませんが、
・きっとシートのA列にComboBox1用の品種名がはいっているのだろう。
・そしてB列に、その品種の細目が入っているんだろう。
このように推測。
このコンボボックスがユーザーフォームのコントロールなのかシート上のActiveXコントロール
なのかが不明ですが、以下。
最初にComboBox1に値をセットするところのタイミングを、最初にComboBox1の▼が
おされた時にしていますが、このコントロールの正体(?)がわかれば、もっと適切な
ところにおくこともできます。
また各種オブジェクトを生成しっぱなしなのが気になっていますが、これもコントロールが
どちらなのかがわかれば、後始末処理も追加できます。
★RowSourceは使いませんのでプロパティで指定してあればなくしておいてください。
Option Explicit
Dim dic As Object
Private Sub ComboBox1_DropButtonClick()
Static Ready As Boolean
If Not Ready Then ComboSet
Ready = True
End Sub
Private Sub ComboBox1_Change()
ComboBox2.Clear
If dic.exists(ComboBox1.Value) Then
ComboBox2.List = dic(ComboBox1.Value).keys
ComboBox2.DropDown 'これはEnd SUbのあとまた閉じると思いますが?
End If
End Sub
Private Sub ComboSet()
Dim c As Range
Set dic = CreateObject("Scripting.Dictionary")
ComboBox1.Clear
ComboBox2.Clear
For Each c In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
If Not dic.exists(c.Value) Then
Set dic(c.Value) = CreateObject("Scripting.Dictionary")
End If
dic(c.Value)(c.Offset(, 1).Value) = True
Next
ComboBox1.List = dic.keys
End Sub
|
|