標題:
[發問]
請問關於動態陣列ReDim
[打印本頁]
作者:
EGBT
時間:
2015-8-13 10:56
標題:
請問關於動態陣列ReDim
知道宣告陣列 Dim Arr(10) As Integer 裡面有11個空間
那假設我不知道我今天資料會產出多少筆. Ex 20..30..40..100..500...
是不是要改使用ReDim來宣告呢?
但我看了ReDim的說明有看沒有懂,上來論壇請教各位前輩...
用最簡單的說明∼~
作者:
ikboy
時間:
2015-8-13 20:30
宣告空陣列 Dim Arr()
Redim preserve Arr(新陣列大小)
作者:
EGBT
時間:
2015-8-14 09:21
樓上大大您好,可以示範一下嗎...?
例如ReDim要插放在哪裡,或是隨著資料的增加或減少去控制ReDim...麻煩大大了
作者:
lpk187
時間:
2015-8-14 09:50
回復
3#
EGBT
我用一個簡單的例子說明:
以下列程式碼來說,程式讀取從A1到A欄的最後一格做為程式處理的範圍,但我不知它最後會落在哪裡,
這時就可以利用ReDim了,讓它一個一個累加到最格處理的儲存格,但這裡要注意的事是ReDim只能增加最後一維的維度
例如ReDim arr(1 to 3,
1 to n
)只能增加紅字部份的維度
若ReDim後面沒有加上Preserve則每次增加維度後必會刪除原來陣列的內容,所以以下列程式來說為了不刪除其陣列中的內容
故寫為 ReDim Preserve ar(n)
Sub Ex()
Dim ar()
n = 1
For Each Rng In Range("a1", Cells(Rows.Count, 1).End(xlUp).Address)
ReDim Preserve ar(n)
ar(n) = Rng
n = n + 1
Next
[C1].Resize(UBound(ar)) = Application.Transpose(ar)
End Sub
複製代碼
作者:
EGBT
時間:
2015-8-14 11:27
哈,很謝謝樓上大大的耐心回答~~~
作者:
EGBT
時間:
2015-8-15 12:09
回復
4#
lpk187
大大,那我請問一下~
是不是要先有Dim ar()
後面才能使用ReDim...
ReDim動態陣列不是放在前面使用嗎
哈...小弟笨拙..
像是先宣告陣列在宣告他的動態陣列
Sup Ex()
Dim ar()
ReDim Preserve ar(n)
...
..
..
..
End Sup
麻煩大大再給小弟多點智慧啊~~~
作者:
lpk187
時間:
2015-8-15 14:07
本帖最後由 lpk187 於 2015-8-15 14:09 編輯
回復
6#
EGBT
ReDim必需先行宣告Dim ar()
你寫的例子是這樣沒錯!
作者:
EGBT
時間:
2015-8-16 00:55
好哦 了解~所以我可以打成
Dim ar()
ReDim ar(n+1)
這樣可以嗎?
作者:
lpk187
時間:
2015-8-16 01:14
回復
8#
EGBT
不行!這樣N沒法累加,一定要另外寫
n=n+1
作者:
c_c_lai
時間:
2015-8-16 07:53
回復
6#
EGBT
希望此圖解能對你有所幫助:
[attach]21727[/attach]
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)