- 帖子
- 835
- 主題
- 6
- 精華
- 0
- 積分
- 915
- 點名
- 0
- 作業系統
- Win 10,7
- 軟體版本
- 2019,2013,2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-3
- 最後登錄
- 2025-7-5
|
本帖最後由 luhpro 於 2010-9-7 22:32 編輯
回復 10# oak0723-1
其實在上面的程式中之所以可以用 ReDim 來重新配置 Arr 為一陣列是因為 Arr 初始宣告時是 Variant 型態,
所以它也可以表示為是一個(尚未定義大小的)陣列.
你可以開啟Excel VBA 的說明來看,
它對於 ReDim 的 解釋如下 :
ReDim 陳述式是用來 "決定" 或 "重新決定" 動態陣列的大小
回復 12# oak0723-1
我覺得不管是 .CurrentRegion 還是 .End(3) 兩者在程式執行到該行時都會是個確定的範圍,
之所以 ReDim Preserve arr(1 To 3, 1 To r) 會說它是個動態陣列,
是因為它在之前已經有被定義過陣列大小了, (因在迴圈中會重複執行該敘述數次)
之後還需要因 r 值而變動其大小故而是動態陣列.
至於
ReDim arr(1 To UBound(rng), 1 To 10)
則因該敘述之前只有 Dim arr 一個敘述, (也可視為 Variant 變數)
其實並沒有真的明確定義過 arr 這個陣列的大小,
直到該敘述才是真的將其定義為一個 "固定大小" 的陣列. |
|