Excel 数组到范围验证列表

Excel 数组到范围验证列表,excel,vba,Excel,Vba,我正在创建一系列验证列表,如下所示: Sub CreateValidationList() Dim myrange as range Dim c as range Dim Validationlist as string Set myrange = range("A1:A10") Validationlist = "" For each c in myrange If c.row = 1 Then Validationlist = c.row Else Validationli

我正在创建一系列验证列表,如下所示:

Sub CreateValidationList()
Dim myrange as range
Dim c as range
Dim Validationlist as string
Set myrange = range("A1:A10")
Validationlist = ""

For each c in myrange
If c.row = 1 Then
    Validationlist = c.row
Else
    Validationlist = Validationlist & ", " & c.row
End If
    With c
        .Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Validationlist
        .Value = c.row
    End With
Next
End Sub
实际上,我的验证列表要复杂得多,范围要大得多(>500行)。所以这比我希望的要长

是否有一种方法可以批量创建验证列表,就像我们在将数组传递到某个范围时所做的那样:

Sub ArrayToRange()
Dim myarray as variant
Dim myrange as range
Set myrange = range("A1:A10")
Set myarray = myrange

'Do stuff in array

Range("A1:A10") = myarray
End Sub
希望这是清楚的


谢谢

所以每个单元格都有一个不同的列表?你的代码为每个单元格创建了不同的列表;列表由该行之前的行号组成。这是“更复杂”列表的一个好例子吗?我不知道如何在一个步骤中将多个不同的验证列表添加到一个范围中。我想你必须一次做第一部分。因此,我认为加快进程的唯一方法是加快创建列表的进程。你可能想用一个微型定时器来测试,看看它是否有价值。可能不是,所以我真的找到了解决办法。我还有一个问题,excel在打开工作簿时会给我一个错误,并会删除所有数据验证。因此,现在我使用selection change事件在选中一个单元格时仅为其创建验证列表。并使用BeforeSave事件删除所有验证列表。它不漂亮,但似乎工作正常。@RonRosenfeld是的!最重要的是,它的速度快得多,因为这一部分现在已经超出了主代码,只在需要时创建所需的列表,所以每个单元格都会得到不同的列表?您的代码为每个单元格创建不同的列表;列表由该行之前的行号组成。这是“更复杂”列表的一个好例子吗?我不知道如何在一个步骤中将多个不同的验证列表添加到一个范围中。我想你必须一次做第一部分。因此,我认为加快进程的唯一方法是加快创建列表的进程。你可能想用一个微型定时器来测试,看看它是否有价值。可能不是,所以我真的找到了解决办法。我还有一个问题,excel在打开工作簿时会给我一个错误,并会删除所有数据验证。因此,现在我使用selection change事件在选中一个单元格时仅为其创建验证列表。并使用BeforeSave事件删除所有验证列表。它不漂亮,但似乎工作正常。@RonRosenfeld是的!最重要的是,它的速度要快得多,因为这一部分现在已经超出了主代码,并且只在需要时创建所需的列表