【发布时间】:2022-07-31 05:28:29
【问题描述】:
我想创建多个带有额外变化的下拉列表。
工作簿的两张表。
我正在尝试为“表格”表格中的单元格 B6 创建一个下拉列表,该下拉列表是从“列表”表格中的单元格 A2:A4 中提取的。根据在单元格 B6 中选择的内容,将为“表格”表中的单元格 D6 创建一个下拉列表(从“列表”表中提取)。这里需要注意的是,如果从“FORM”表的单元格 B6 的下拉列表中选择“PART”,而不是在 D6 中生成下拉列表,我希望单元格显示“N/A”。
Sub PRODUCT_LIST()
Dim FORM As Worksheet
Dim LISTS As Worksheet
Dim PRODUCT As Range
Dim PRODUCT_LIST As Range
Dim MODEL As Range
Dim BIKE_LIST As Range
Dim CHAIR_LIST As Range
Set FORM = ThisWorkbook.Worksheets("FORM")
Set LISTS = ThisWorkbook.Worksheets("LISTS")
Set PRODUCT = FORM.Range("B6")
Set MODEL = FORM.Range("D6")
Set PRODUCT_LIST = LISTS.Range("A2:A4")
Set BIKE_LIST = LISTS.Range("B2:B8")
Set CHAIR_LIST = LISTS.Range("C2:C3")
With PRODUCT.Validation
.Delete 'delete previous validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="='" & LISTS.Name & "'!" & PRODUCT_LIST.Address
End With
If PRODUCT.Value = "BIKE" Then
With MODEL.Validation
.Delete 'delete previous validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="='" & LISTS.Name & "'!" & CHAIR_LIST.Address
End With
ElseIf PRODUCT.Value = "CHAIR" Then
With MODEL.Validation
.Delete 'delete previous validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="='" & LISTS.Name & "'!" & BIKE_LIST.Address
End With
ElseIf PRODUCT.Value = "PART" Then
MODEL.Value = "N/A"
Else
End If
End Sub
B6 的下拉列表有效,但 D6 的下拉列表似乎忽略了我设置的条件。无论我在 B6 的下拉列表中选择什么,D6 的下拉列表总是从 CHAIR_LIST 中拉出。
【问题讨论】:
-
是什么触发了这段代码?
-
如前所述,是什么触发了讨论中的代码?您不需要创建一次
PRODUCT验证,然后其余代码成为另一个子的一部分,由Worksheet_Change事件触发吗?您能否更好地解释(用语言)您对上述代码的期望是什么?您是否手动运行代码并希望在第二次验证中进行更改?我的意思是,如果你简单地运行它,PRODUCT验证不会改变它的值,并且在另一个('MODEL`)中可能不会发生任何新的事情...... -
抱歉回复晚了,我几分钟前才有机会看这个。 FaneDuru 是完全正确的,我需要创建一次
PRODUCT验证,然后其余代码成为另一个子的一部分,由Worksheet_Change事件触发。对于缺乏明确性,我深表歉意,我对此还是很陌生。