gpt4 book ai didi

arrays - 将项目附加到excel vba中的数组时下标超出范围

转载 作者:行者123 更新时间:2023-12-04 20:35:02 25 4
gpt4 key购买 nike

我在 excel vba 中有一个数组,我想将 3 个项目附加到数组的末尾,但是每当我运行我的代码时都会出现下标超出范围错误。

首先,我拆分了“rtv”数组,我想将“class”、“age”和“address”附加到“rtv”数组的末尾,但我收到一个错误。

我的代码如下所示:

rtv = Split(Application.WorksheetFunction.VLookup(Name,Sheets("Properties").Range("B1:C7"), 2, False), ",") 
rtv(UBound(rtv)) = "Class"
rtv(UBound(rtv) + 1) = "Age"
rtv(UBound(rtv) + 2) = "Address"

For i = LBound(rtv) To UBound(rtv)
rtv(i) = Chr(34) & rtv(i) & Chr(34) & ":" & Chr(34) & Chr(34) & ";"
Next i

这就是我声明我的数组的方式:
Dim rtv() As String
Dim i As Long

任何人都知道错误在哪里?

最佳答案

VBA数组的大小不能简单地通过添加元素来增加。数组必须是 ReDim编。如果内容需要在 ReDim 时保留,然后 ReDim Preserve必须使用。

示例(简化 Application.WorksheetFunction.VLookup(Name,Sheets("Properties").Range("B1:C7"), 2, False) 使用字符串)

Sub test()

Dim rtv() As String

sVLookupResult = "a,b,c"

rtv = Split(sVLookupResult, ",")

lrtvLength = UBound(rtv)

ReDim Preserve rtv(lrtvLength + 3)

rtv(lrtvLength + 1) = "Class"
rtv(lrtvLength + 2) = "Age"
rtv(lrtvLength + 3) = "Address"

For i = LBound(rtv) To UBound(rtv)
rtv(i) = Chr(34) & rtv(i) & Chr(34) & ":" & Chr(34) & Chr(34) & ";"
Next i

MsgBox Join(rtv)

End Sub

关于arrays - 将项目附加到excel vba中的数组时下标超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43650948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com