我遇到了一些问题,我正在努力从另一个单元格中的选择中指定数据验证集。例如,他们选择Thomas,并选择与“Thomas”对应的表格中的每个单元格作为另一个下拉列表的选择范围。
代码大多有效,但并不完全相同。最后一部分,With .Validation部分,会显示应用程序定义的错误。我怀疑它与rng是一个被视为字符串的范围有关,所以我尝试创建一个单独的字符串变量set作为rng的地址,但这也带来了一个错误。我也试过(如下所示),只是将rng的地址指定为数据验证公式本身,这也会导致错误。
我在这里做错了什么?
Sub ProcessSelector()
Dim lastrow As Long
Dim c As Range
Dim rng As Range
ActiveWorkbook.Worksheets(2).Select
With ActiveWorkbook.Worksheets(2)
lastrow = .Cells(.Rows.Count, "E").End(xlUp).Row
For Each c In .Range("E1:E" & lastrow)
If c.Text = "Thomas" Then
If rng Is Nothing Then
Set rng = .Range("C" & c.Row)
Else
Set rng = Union(rng, .Range("C" & c.Row))
End If
End If
Next c
End With
ActiveWorkbook.Worksheets(1).Select
With ActiveWorkbook.Sheets(1).Range("D5")
With .Validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=" & rng.Address
End With
End With
End Sub
谢谢!
答案 0 :(得分:0)
我找到了答案!
它会第一次工作,并在每次之后给我一个错误。原因是我需要添加
在.Validation部分之后“。删除”,以清除该单元格上预先存在的数据验证设置。
With ActiveWorkbook.Sheets(1).Range("D5").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=listProcesses"
End With