在P列中,我有一个下拉列表,对于我创建的每个新工作表,要添加的代码如下所示。
lastrow = ActiveWorkbook.Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).row
With Range("P2:P" & lastrow).Validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="Yes,No,N/A"
.IgnoreBlank = True
.InCellDropdown = True
End With
在Q列中,我希望根据用户从P列中输入的特定值填充另一个下拉列表。
例如,如果用户在P列中选择No
,则我只希望在Q列的该行中填充值value 1
或value 2
。如果用户选择{{1 }}在P列中,我只希望在Q列中填充值Yes
或value 3
。
我知道我需要在上面声明以下内容:
value 4
有人可以帮我修改此内容吗?或者如果列中没有数据,这是不可能的吗?
答案 0 :(得分:0)
接下来,将根据列P上选择的值将验证列表添加到列Q:
Sub foo()
lastrow = ThisWorkbook.Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
With Range("P2:P" & lastrow).Validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="Yes,No,N/A"
.IgnoreBlank = True
.InCellDropdown = True
End With
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 16 And Target.Value = "No" Then
With Range("Q" & Target.Row).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="value 1, value 2"
.IgnoreBlank = True
.InCellDropdown = True
End With
ElseIf Target.Column = 16 And Target.Value = "Yes" Then
With Range("Q" & Target.Row).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="value 3, value 4"
.IgnoreBlank = True
.InCellDropdown = True
End With
End If
End Sub