VBA使用数组值作为单元validation值

我现在在做什么,

  1. 使用多个工作表中的特定列(项目列)填充具有唯一数据的数组
  2. 使用上面的数组值在下一个表格中填充下拉列表

但是,我有validation步骤,我尝试设置Formula1:=arrItems()

这是我的代码:

  Dim ws As Worksheet Dim tmpItems As String Dim arrItems() As String Dim tmpDates As String Dim arrDates() As String Dim ItemColumn As Range Const ItemHeaderCell As String = "Item" Dim EmptyRange As Range For Each ws In ActiveWorkbook.Worksheets If ws.Name <> "Raw Data" Then ws.ListObjects.Add(xlSrcRange, ws.UsedRange, , xlYes).Name = ws.Name ws.ListObjects(ws.Name).TableStyle = "TableStyleMedium9" tmpDates = tmpDates & ws.Name & "|" Set ItemColumn = ws.UsedRange.Find(ItemHeaderCell, , xlValues, xlWhole) For Each EmptyRange In Intersect(ItemColumn.EntireColumn, ws.UsedRange).Cells 'skip the header and empty cells If Not IsEmpty(EmptyRange.Value) And EmptyRange.Address <> ItemColumn.Address And (InStr(tmpItems, EmptyRange) = 0) Then tmpItems = tmpItems & EmptyRange.Value & "|" End If Next EmptyRange End If Next ws If Len(tmpItems) > 0 Then tmpItems = Left(tmpItems, Len(tmpItems) - 1) arrItems = Split(tmpItems, "|") If Len(tmpDates) > 0 Then tmpDates = Left(tmpDates, Len(tmpDates) - 1) arrDates = Split(tmpDates, "|") Dim worksheet2 As Worksheet Set worksheet2 = ActiveWorkbook.Sheets.Add(Before:=ActiveWorkbook.Sheets(1)) worksheet2.Name = "Main" With worksheet2.Range("A1").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=arrItems() End With 

如何纠正这个错误?

Validation.Formula1是一个string,而不是一个数组。 如果我正确地读你的代码,你可以改变填充tmpItems的行:

 tmpItems = tmpItems & EmptyRange.Value & "," 

之后,只需摆脱最后一个逗号,并为您的Formula1使用tmpItems