从3D数组向表中添加数据验证,VBA excel

时间:2016-03-27 12:13:01

标签: vba excel-vba excel

我有一个3D数组字符串myArray(1到30,1到80,1到20)。在我的工作簿中,我有一个占用范围(1,1)到(30,20)的表。 我想使用 validation.add类型方法按以下顺序验证表格的单元格:

表格的第1列

单元格(1, 1 )应包含值myArray(1,1, 1 )到myArray(1,80, 1 ) )

单元格(2, 1 )应包含值myArray(2,1, 1 )到myArray(2,80, 1 ) )

...

单元格(30, 1 )应包含值myArray(30,1, 1 )到myArray(30,80, 1 ) )

表格第2栏

单元格(1, 2 )应包含值myArray(1,1, 2 )到myArray(1,80, 2 ) )

单元格(2, 2 )应包含值myArray(2,1, 2 )到myArray(2,80, 2 ) )

...

单元格(30, 2 )应包含值myArray(30,1, 2 )到myArray的值(1,80, 2

等等..

简而言之,表中的每个单元格都应包含从数组中提取的数据的删除列表(表的每一列都包含来自数组的不同页面的值)。

如果我的问题没有明确规定,我很抱歉,我是编程新手并且对VBA经验不足。

1 个答案:

答案 0 :(得分:1)

以下简化解决方案演示了如何根据数组DropDown值将验证Worksheet列表添加到Cell List1“A1”:

Sub AddValidation()
    Dim List1(1 To 5) As String
    List1(1) = 1
    List1(2) = 2
    List1(3) = 3
    List1(4) = 4
    List1(5) = 5

    With Range("A1").Validation
        .Add Type:=xlValidateList, Formula1:=Join(List1, ",")
        .InCellDropdown = True
    End With
End Sub

要动态修改添加到工作表Cells的验证列表,请参阅下面显示的解决方案:

Sub AddValidationDynamicList()
    Dim List1(1 To 5) As String
    List1(1) = 1
    List1(2) = 2
    List1(3) = 3
    List1(4) = 4
    List1(5) = 5

    Dim str As String
    str = Join(List1, ",")

    For I = 1 To 5
        With Range("A" & I).Validation
            .Add Type:=xlValidateList, Formula1:=str
            .InCellDropdown = True
        End With
        str = Mid(str, InStr(1, str, ",") + 1)
    Next I
End Sub

您可以进一步扩展此解决方案,以满足您使用多维数组的要求。

希望这会有所帮助。