| 
    
     |  | ▼佐藤123 さん、Asakiさん、こんばんは。 コンボボックスでの例です。
 
 コンボボックスの選択肢データは、Sheet2にあるのでしたね?
 
 Sheet2
 A   B    C   D    E    F   G   H   I
 1
 2 1   ご飯    1   1   こしひかり  1    1   1  電気釜
 3 2   パン    1   2   あきたこまち 1    1   2  しゃもじ
 4 3   麺     2   1   食パン    1    2   1  ガス釜
 5          2    2   ロールパン  1    2   2  高級しゃもじ
 6          2    3   あんぱん   3    1   1  塩
 7          3    1   ラーメン   3    1   2  味噌
 8          3    2   焼きそば   3    1   3  醤油
 9          3    3   そうめん
 こんなイメージでよろしいですか?
 
 コードは、標準モジュールに
 '==================================================================
 Sub auto_open()
 With Worksheets("sheet2")
 Set rng = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))
 End With
 With Worksheets("sheet1").CBox1
 .Clear
 If rng.Row > 1 Then
 .List() = rng.Offset(0, 1).Value
 .ListIndex = -1
 End If
 End With
 End Sub
 
 
 コンボボックスがあるSheet1のモジュールに
 '==================================================================
 Private Sub CBox1_Change()
 With Worksheets("sheet2")
 Set rng = .Range(.Cells(2, 3), .Cells(.Rows.Count, 3).End(xlUp))
 add1 = rng.Address(, , , True)
 add2 = rng.Offset(0, 2).Address(, , , True)
 End With
 With CBox2
 .Clear
 If rng.Row > 1 Then
 .List() = Filter(Application.Evaluate( _
 "=transpose(if((" & add1 & "=" & _
 CBox1.ListIndex + 1 & ")*1=1," & _
 add2 & ",""0""))"), "0", False)
 End If
 End With
 End Sub
 '======================================================================
 Private Sub CBox2_Change()
 With Worksheets("sheet2")
 Set rng = .Range(.Cells(2, 6), .Cells(.Rows.Count, 6).End(xlUp))
 add1 = rng.Address(, , , True)
 add2 = rng.Offset(0, 1).Address(, , , True)
 add3 = rng.Offset(0, 3).Address(, , , True)
 End With
 With CBox3
 .Clear
 If rng.Row > 1 Then
 .List() = Filter(Application.Evaluate( _
 "=transpose(if((" & add1 & "=" & _
 CBox1.ListIndex + 1 & ")*(" & _
 add2 & "=" & CBox2.ListIndex + 1 & ")=1," _
 & add3 & ",""0""))"), "0", False)
 End If
 End With
 End Sub
 
 私の方で確認したところ以上で動いていますが、
 試してみて下さい。
 
 |  |