【发布时间】:2014-09-16 02:12:56
【问题描述】:
我正在处理的一些代码存在问题,用于从另一个单元格中的选择中指定数据验证集。例如,他们选择 Thomas,表格中与“Thomas”相对应的每个单元格都被选为另一个下拉列表的选择范围。
代码大部分都有效,但并没有完全融合在一起。最后一部分,With .Validation 部分,提出了一个应用程序定义的错误。我怀疑它与 rng 是一个被视为字符串的范围有关,所以我尝试创建一个单独的字符串变量集作为 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
谢谢!
【问题讨论】:
标签: excel vba string validation range