2017-04-27 56 views
2

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

首先,我分裂“RTV”阵列,我想为“类”,“年龄”,并追加“地址到年底‘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 

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

+0

你的意思是循环(通过使用一个字符串简化Application.WorksheetFunction.VLookup(Name,Sheets("Properties").Range("B1:C7"), 2, False))? – shakespeare

+0

我想在循环之前添加三个额外的元素 – decemberrobot

+0

我认为有些图像可能有助于理解它 – shakespeare

回答

1

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

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