2017-04-27 53 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