- 帖子
- 835
- 主題
- 6
- 精華
- 0
- 積分
- 915
- 點名
- 0
- 作業系統
- Win 10,7
- 軟體版本
- 2019,2013,2003
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2010-5-3
- 最後登錄
- 2024-11-14
|
10#
發表於 2011-5-1 07:33
| 只看該作者
本帖最後由 luhpro 於 2011-5-1 07:45 編輯
回復 7# chin15
謝謝 chin15
因為以前用過 Turbo C 設定整數陣列的方式可以是
int *A[] = { 5, 53, 52, 57, 43, 0, 52, 72, 93, 12};
這樣的方式來設定整數陣列,
所以才會想 VBA 是否也有類似的方法可以用列舉式對整數陣列給值.
回復 9# GBKEE
謝謝 GBKEE
簡單的說用 Variant 彈性很大,
而某些變數一但定義下去,
想要變更內容可能指令就要不一樣了.
回復 8# Hsieh
謝謝 Hsieh
因為程式環境需求上需要對記憶體空間斤斤計較,
所以才會希望該陣列能不要用 Variant 型態(太佔空間了),
仔細思考了一下我打算採用下列的方式 :
Dim iAr%(0 To 99), iI%
Dim vA
vA = Array(5, 53, 52, 57, 43, 0, 52, 72, 93, 12, _
26, 40, 84, 45, 59, 45, 91, 5, 97, 21, _
14, 47, 59, 61, 91, 5, 73, 94, 41, 33, _
5, 55, 80, 95, 54, 89, 29, 65, 13, 51, _
54, 78, 35, 86, 49, 48, 95, 25, 10, 76, _
96, 59, 47, 11, 59, 50, 73, 26, 2, 26, _
76, 39, 46, 74, 8, 56, 23, 8, 29, 1, _
86, 54, 42, 81, 59, 80, 9, 28, 54, 7, _
47, 46, 51, 2, 92, 27, 55, 32, 51, 36, _
92, 47, 25, 96, 43, 75, 38, 31, 24, 25)
For iI = 0 To 99
iAr(iI) = vA(iI)
Next iI
Set vA = Nothing
雖然還是會多佔一些逐個給值的時間(此處與假設原列舉式給值VBA可以接受做比較)與一個 Variant 空間,
但當陣列較大時卻應該可以省掉滿多記憶體空間, (例如需要動態新增一個 Sheet 並給定一些 Row 與 Column 的屬性之類的)
程式會比較容易判讀即便列印也不會太長. |
|