2016-03-27 121 views
0

我有一個3D數組字符串myArray(1到30,1到80,1到20)。在我的工作簿中,我有一張佔據範圍(1,1)到(30,20)的表格。 我想使用validation.add型方法驗證表的單元格中的順序如下:將數據驗證添加到3D數組的表中,VBA excel

的第1列:

細胞(1,1 )應包含的值myArray的(1,1,)到myArray的(1,80,)

細胞(2,)應包含在v alues myArray的(2,1,)到myArray的(2,80,)

...

電池(30,)應包含myArray的值(30,1 ,)至MYARRAY(30,80,)

的第2列:

細胞(1,2 )應包含數值myArray的(1,1,)到myArray的(1,80,)

細胞(2,2 )應包含的值myArray的(2,1,)到myArray的(2,80,)

...

電池(30,)應包含數值myArray的(30,1,)至MYARRAY(1,80,)

等..

總之,在表中應該包含與從數組中取出數據丟棄列表中的每一小區(各表中的列包含來自數組的不同頁面的值)。

如果我的問題沒有明確說明,我很抱歉,我是編程新手,沒有什麼VBA經驗。

回答

1

以下簡化溶液演示添加驗證DropDown列表以基於所述陣列List1WorksheetCell「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 

您可以進一步擴展此解決方案以適應您的usi要求ng多維數組。

希望這會有所幫助。

+0

似乎這會做到這一點。只有一件事我仍然無法確定:如何僅將join()用於數組的一部分?說第一列 – Sergey

+0

該示例解決方案通過將Join()函數應用於整個數組來創建字符串,然後迭代地移除字符串部分。或者,您可以動態重新創建數組,然後應用Join()函數。根據您的意見,如果您標記接受的答案,我將不勝感激。如果您有更多問題,請將它們分開發布,包括代碼段並突出顯示有問題的部分。祝你的項目好運。最好的問候, –

+0

非常感謝你(= – Sergey