数组VBA中的大小错误

数组VBA中的大小错误,vba,Vba,我又来了 使用数组时存在错误 允许我进入阵列的最大大小是26 为什么会这样 错误就在这里 单元3 函数列表框 在这一行 Dim mylist1(26) As String For i = 0 To 26 mylist1(i) = CStr(Worksheets("Helper").Cells(i + 6, 4).Value) Next i With ws.Range("E8:E8").Validation .Delete .Add Type:=xlValidateList

我又来了 使用数组时存在错误

允许我进入阵列的最大大小是26 为什么会这样

错误就在这里 单元3 函数列表框 在这一行

Dim mylist1(26) As String
For i = 0 To 26
    mylist1(i) = CStr(Worksheets("Helper").Cells(i + 6, 4).Value)
Next i
With ws.Range("E8:E8").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
        Operator:=xlBetween, Formula1:=Join(mylist1, ",")
End With
我从隐藏的工作表中获取值 如果将大小更改为27,则保存后会出现错误 如果更改为27,请保存 并再次打开,出现错误

这是文件链接


谢谢

因为很可能会从太长的字符串中抛出错误,因此您可以将验证公式转换为引用列表范围,并删除
mylist1
数组:

Dim nElements As Long

nElements = 26
With WS.Range("E8").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
        Operator:=xlBetween, Formula1:="=Helper!$D$6:$D$" & 6 + nElements-1
End With

“我有一个错误”不是问题的有效描述。可能重复的是数组的长度,而不是字符(对不起),但我不明白为什么会发生这样的情况。您是否意识到
Join
创建了一个字符串?当您调用
Join(mylist1,”)
,如果不是一个包含所有26个用逗号分隔的值的字符串,您希望它生成什么?如果您不希望这种情况发生,那么为什么要调用
Join
,如果您确实希望这种情况发生,那么为什么要怀疑这种情况会发生?如果从数组中创建一个字符串,那么当向数组中添加第27个元素时,该字符串将变得太长。我会记住的。@LuisAguilar,不客气。如果我的答案解决了你的问题,那么请考虑将它标记为接受。非常感谢。