您可以使用 Range.Value
屬性來將非連續儲存格的值轉換為陣列。但是,由於非連續儲存格包含多個範圍,您需要將每個範圍的值分開處理。以下是一個示例程式碼,可將非連續儲存格的值轉換為陣列:
Sub ConvertRangeToArray()
Dim rng As Range
Dim areas As Range
Dim arr() As Variant
Dim i As Long, j As Long, k As Long
' 設定 Range
Set rng = Range("A1:A3, A5:A7")
' 取得所有區域
Set areas = rng.Areas
' 計算陣列大小
k = 0
For Each rng In areas
k = k + rng.Rows.Count
Next rng
' 重新設定陣列大小
ReDim arr(1 To k, 1 To 1)
' 將值複製到陣列中
i = 1
For Each rng In areas
For j = 1 To rng.Rows.Count
arr(i, 1) = rng.Cells(j, 1).Value
i = i + 1
Next j
Next rng
' 輸出陣列值
For i = 1 To k
Debug.Print arr(i, 1)
Next i
End Sub
這個程式碼會將非連續儲存格中的值複製到 arr
陣列中,然後您可以根據需要進一步處理這個陣列。請注意,這個程式碼假設您的非連續儲存格垂直排列。如果儲存格是水平排列,您需要調整程式碼中的索引。