有没有办法在VBA中操作数据验证中的每个项目?

时间:2016-03-16 19:03:44

标签: excel vba excel-vba

我正在尝试在VBA中执行循环功能,以选择数据验证中的每个项目(22项),并根据项目名称复制和粘贴新闻表。

我尝试使用Record Macro来查看选择不同数据验证项的语言,但没有注册。有没有办法在VBA中操作数据验证中的每个项目?

1 个答案:

答案 0 :(得分:1)

2 形式的DV。一个使用像下列单元格的单元格:

enter image description here

和另一个使用内部逗号分隔列表,如:

enter image description here

此代码将处理以下任一形式:

Sub IsDV()
    Dim s As String, r As Range, rng As Range

    s = "NO DV"
    On Error Resume Next
    With ActiveCell
        s = .Validation.Formula1
        On Error GoTo 0
    End With

    If s = "NO DV" Then
        MsgBox s
        Exit Sub
    End If

    If Left(s, 1) = "=" Then
        Set rng = Range(Mid(s, 2))
        For Each r In rng
            MsgBox r.Value
        Next r
        Exit Sub
    End If

    ary = Split(s, ",")
    For Each a In ary
        MsgBox a
    Next a

End Sub

修改#1:

如图所示,Formula1创建了一个字符串。如果该字符串以 = 符号开头,则字符串的其余部分为Address。所以我丢弃 = 符号并制作一个范围。知道范围允许我抓住项目