Board logo

標題: 請問Range的文字給到陣列 [打印本頁]

作者: stillfish00    時間: 2012-10-12 16:07     標題: 請問Range的文字給到陣列

1.
    Dim Arr(1 to 5) as string 宣告陣列後
    請問除了用loop迴圈一個一個給定外 , 有辦法一次將
    Range儲存格的內容(如$A$1:$E$1)初始化給陣列嗎?

2.
    如果改用Variant變數
    Dim Arr as Variant
    Arr= Application.Transpose(Application.Transpose(Range("$A$1:$E$1")))
    Arr需不需要釋放記憶體呢? 怎麼還原它給值前的狀態?
作者: GBKEE    時間: 2012-10-13 09:10

回復 1# stillfish00
Q 1的答案在Q2:  Arr= Application.Transpose(Application.Transpose(Range("$A$1:$E$1")))
Q2:需不需要釋放記憶體呢?      自行決定
      怎麼還原它給值前的狀態?    Erase 陳述式 重新初始化固定大小陣列的元素,並釋放動態陣列的儲存空間
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Arr As Variant
  4.     Arr = Application.Transpose(Application.Transpose(Range("$A$1:$E$1")))
  5.     Erase Arr
  6. End Sub
複製代碼

作者: stillfish00    時間: 2012-10-13 21:40

回復 2# GBKEE
我用1會出現錯誤耶 , 如下圖
[attach]12765[/attach]
作者: GBKEE    時間: 2012-10-14 07:23

本帖最後由 GBKEE 於 2012-10-14 09:05 編輯

回復 3# stillfish00
  1. Option Explicit
  2. Sub Ex() '有指定陣列的元素數須一一的給值
  3.     Dim Arr(1 To 5) As Variant, i As Integer
  4.     For i = 1 To 5
  5.         Arr(i) = Application.Transpose(Application.Transpose(Range("$A$1:$E$1").Columns(i)))        
  6.     Next
  7.     Erase Arr
  8. End Sub
  9. Sub Ex1() '動態陣列 可以 一次給所有的值
  10.     Dim Arr() As Variant  '<-> Dim Arr As Variant
  11.     Arr = Application.Transpose(Application.Transpose(Range("$A$1:$E$1")))
  12.     Erase Arr
  13. End Sub
複製代碼

作者: stillfish00    時間: 2012-10-14 11:41

回復 4# GBKEE
明白了 , 感謝版主回應




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)