2010-01-15 2 views
3

У меня есть кусок кода, написанные на Visual Basic:Массивов неизвестной длины в Visual Basic

Dim n As Double, i As Integer 
n = 4 
Dim Ramp_length(1 To 4) As Double 
For i = 1 To n 
    Ramp_length(i) = Cells(13 + i, 5) 
    'Cells(65 + i, 7) = Ramp_length(i)' 
Next i 

Есть ли способ я могу воспроизвести результат без объявления массива с «фиксированной» длиной? В конечном итоге я хочу, чтобы код считывал столбец с неизвестной длиной и сохранял его в массиве равной или меньшей длины, чтобы его можно было изменить. Это всего лишь часть кода ... если кто-то может мне помочь, это будет здорово! : D

Благодаря

+0

Это VB, VBA, VB.NET? Пожалуйста, уточните, какой из них. –

ответ

0

Там нет такой вещи, массива с "динамической" длиной.

Вы можете, однако, инкапсулировать некоторую логику, которая будет изменять размер массива при необходимости (это называется ResizeArray на некоторых языках, List in others или ArrayList, извините, я не знаю точно, какой из них VB, если это VB.NET, то используйте «Список»).

0

Вы можете использовать ArrayList. Это ближе всего к динамическому массиву. Существуют и другие коллекции, поэтому это может привести к тому, что вы ожидаете делать с данными. Однако вы не можете создать массив и динамически изменять его длину в vb. (Ну, не эффективно :))

1

Не уверен, если это то, что вы ищете:

Dim n As Double = 44 
    Dim Ramp_Length_List As New List(Of Double) 
    For i As Integer = 1 To n 
     Ramp_Length_List.Add(Your_Temp_Double) 
    Next i 

    Dim Ramp_Length(Ramp_Length_List.Count - 1) As Double 
    For i As Integer = 0 To Ramp_Length_List.Count - 1 
     Ramp_Length(i) = Ramp_Length_List(i) 
    Next 
    Ramp_Length_List = Nothing 
    'Ramp_Length() as Double is now sort of dynamic. 
1
Dim DynaStrings() As String 
ReDim DynaStrings(10) 
DynaStrings(0) = "String 0" 
'Need more data space! 
ReDim DynaStrings(100) 
DynaStrings(50) = "String 50" 

Надеется, что это может помочь.

+0

Так просто! Вы должны знать, что это верхняя граница, а не размер массива. Это нечто очевидное для людей с небольшим знанием о VB, но это было не для меня :-) – xverges

Смежные вопросы