如何在excel VBA中将值从数组传递到特定单元格(而不是组合列表)中的下拉列表

如何在excel VBA中将值从数组传递到特定单元格(而不是组合列表)中的下拉列表,vba,excel,Vba,Excel,我试图将值从数组传递到指定单元格中的下拉列表。 假设我有一个数组,其中包含值1,2,3,我希望单元格A1包含一个下拉列表,其中包含这些值,有什么方法可以做到这一点吗? 我试图实现这一点,而不必首先将这些值分配给不同的单元格并使用数据验证。(如标题所述,我不想使用组合框或用户表单)这里有两种方法,相同的结果 Sub DataVal1() With Range("A1").Validation .Delete .Add Type:=xlValidateList

我试图将值从数组传递到指定单元格中的下拉列表。 假设我有一个数组,其中包含值1,2,3,我希望单元格A1包含一个下拉列表,其中包含这些值,有什么方法可以做到这一点吗?
我试图实现这一点,而不必首先将这些值分配给不同的单元格并使用数据验证。(如标题所述,我不想使用组合框或用户表单)

这里有两种方法,相同的结果

Sub DataVal1()
    With Range("A1").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
             xlBetween, Formula1:="1,2,3"
    End With
End Sub
Sub DataVal2()
    Dim x As String
    x = "1,2,3"
    With Range("A1").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
             xlBetween, Formula1:=x
    End With
End Sub

这应该为您提供一种方法:

Dim myArray
myArray = Array("1", "2", "3")

Range("A" & 1).Select

With Selection.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:=myArray(0) & "," & myArray(1) & "," & myArray(2)
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
End With

如果你不想要一个组合框,还有什么其他类型的下拉列表?IDGIOh,也许我使用了错误的术语,我认为组合框是ActiveX下拉列表控件。我需要的是一个单元格内的下拉列表,就像通过数据验证创建的下拉列表一样。这个答案将通过以下方式得到极大改进:1)使用
Formula1:=Join(myArray),“&myArray(1)&”、“&myArray(2)
替换
Formula1:=Join(myArray),”
,尤其是在验证下拉列表很长的情况下。2) 删除
范围(“A”&1)。选择
,然后将
替换为选择。验证
替换为
范围(“A1”)。验证
。当您只需传递特定的范围对象时,不要使用
选择
。除非有必要,否则不要在range对象参数中连接字符串。