VBA筛选后的数据赋值到动态一维数组并输出到单元格下拉菜单中问题?

我用代码在某个表格中循环搜索出几个数据(个数不确定),然后每次循环时将数据赋值给一个动态数组,最后把该数组赋到一个下拉菜单中?
求各位大神帮我看一下代码哪里出错了

‘循环查询的数值赋值到动态一维数组
Dim out()
If wsd.Cells(j, 3) = wss.Cells(i, 5) then
n = n + 1
ReDim Preserve out(1 To n)
out(n) = wsd.Cells(j, 6).Value
End If
For aa = 1 To UBound(out, 1)
out1 = out1 & out(i) & ","
Next
'数组输出到下拉菜单中
With cal.Range("A1").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=out1
End With
最新回答
清风不语

2024-09-22 07:54:43

问题在于这里,你的循环里的内容和你的循环变量没有任何关系。 应该修改为:

For aa = 1 To UBound(out, 1)
    'out1 = out1 & out(i) & ","    ’这是你的代码
    out1 = out1 & out(aa) & ","    ’这是修改后的代码 
Next aa

我将你的代码粘贴并修改后,亲测没问题,见附件。

追问
你说的对,我发了部分代码,这里我改了,后面这里还是通不过

xlBetween, Formula1:=out1
这个out1输出不了,说应用程序定义或者对象错误
追答

你有没有试我的附件,另外我觉得如果是这样的话那问题就出在你的“out1”上, 请显示的将你的Out1声明为字符串,另外在用作下拉列表参数前用debug.print方法输出到立即窗口,看看你的out1最终结果是多少。没有你具体的文件和out1最终的结果,很难判断。

Dim out1 as string
' code
'在立即窗口中查看out1的最终结果
debug.print out1
'数组输出到下拉菜单中