【问题标题】:Add data validation to a table from a 3D array, VBA excel将数据验证添加到 3D 数组中的表,VBA excel
【发布时间】:2016-03-27 12:13:01
【问题描述】:

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

表格的第一列

cell(1,1) 应包含值 myArray(1,1,1) 到 myArray(1,80,1 )

cell(2,1) 应包含 myArray(2,1,1) 到 myArray(2,80,1 的值)

...

cell(30,1) 应包含 myArray(30,1,1) 到 myArray(30,80,1 的值)

表格的第二列

cell(1,2) 应包含值 myArray(1,1,2) 到 myArray(1,80,2 )

cell(2,2) 应包含 myArray(2,1,2) 到 myArray(2,80,2 的值)

...

cell(30,2) 应包含 myArray(30,1,2) 到 myArray(1,80,2 的值)

等等..

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

如果我的问题没有明确说明,我深表歉意,我是编程新手,对 VBA 几乎没有经验。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    以下简化的解决方案演示了基于数组List1 值将验证DropDown 列表添加到Worksheet Cell“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
    

    为了动态修改添加到WorksheetCells的验证列表,参考下图解决方案:

    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
    

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

    希望这会有所帮助。

    【讨论】:

    • 似乎这可以解决问题。只有一件事我仍然无法理解:如何仅将 join() 用于数组的一部分?说第一列
    • 此示例解决方案通过将 Join() 函数应用于整个数组来创建字符串,然后迭代地删除字符串部分。或者,您可以动态重新创建数组,然后应用 Join() 函数。根据您的 cmets,如果您将答案标记为已接受,我将不胜感激。如果您有更多问题,请单独发布,包括您的代码 sn-p 并突出显示有问题的部分。祝你的项目好运。最好的问候,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 2017-06-04
    • 1970-01-01
    • 2022-06-11
    相关资源
    最近更新 更多