返回列表 上一主題 發帖

[發問] 如何才能用列舉方式來指定整數陣列的內容值

[發問] 如何才能用列舉方式來指定整數陣列的內容值

本帖最後由 luhpro 於 2011-4-30 05:24 編輯

想請問底下程式中的陣列為何不能指定呢?
Dim A(0 To 2) As Integer
A = Array(10, 20, 30)

若改用這樣就可以 :
(取自 Excel 說明中的範例)
Dim A As Variant
A = Array(10, 20, 30)

或

(以下為我目前用的方式, 也是 取自Excel 說明中的範例, 用起來很不方便)
Dim A%(0 To 2)
A(0) = 10
A(1) = 20
A(0) = 30

難道不能用列舉的方式一次指定整個整數陣列的值嗎?

回復 2# chin15

抱歉, 可能是我說的不清楚,
所謂列舉式的方式就是整個陣列的值可以一次就全部指定.
舉例來說:
A(0) = 5
A(1) = 53
A(2) = 52
A(3) = 57
A(4) = 43
A(5) = 0
.
.
.
我稱為逐個給值, 如果整個陣列有 100 個亂數值, 就要打 100 行給值的指令, 而且 A(x) 中的 x 還不能打錯

而底下這個
A = Array(5,53,52,57,43,0,52,72,93,12)

我稱為列舉式給值.

TOP

本帖最後由 luhpro 於 2011-4-30 22:00 編輯

回復 5# GBKEE
回復 4# chin15

前面就是不行啊,
那種方式只能用在 Variant 型態,
但 Integer 型態 Excel 不讓用,
只能用 "逐個給值" (如上述). ><

TOP

本帖最後由 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 的屬性之類的)
程式會比較容易判讀即便列印也不會太長.

TOP

        靜思自在 : 小事不做、大事難成。
返回列表 上一主題