|
▼佐藤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
私の方で確認したところ以上で動いていますが、
試してみて下さい。
|
|