返回列表 上一主題 發帖

請問Range的文字給到陣列

請問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需不需要釋放記憶體呢? 怎麼還原它給值前的狀態?

回復 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
複製代碼

TOP

回復 2# GBKEE
我用1會出現錯誤耶 , 如下圖

TOP

本帖最後由 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
複製代碼

TOP

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

TOP

        靜思自在 : 【是否發揮了良能?】人間壽命因為短暫,才更顯得珍貴。難得來一趟人間,應問是否為人間發揮了自己的良能,而不要一味求長壽。
返回列表 上一主題