Board logo

標題: VBA Range assign 入array 快速方法 [打印本頁]

作者: bongbong3481    時間: 2017-4-30 00:28     標題: VBA Range assign 入array 快速方法

請問有冇快速既方法將range 入邊既CELL Assign 入array 內?
(我目前用for loop  個一個CELL assign 入array, 試過用array=range(下面 1), 好似唔得, 但反過黎range=array(下面 2) 又得, 唔明點解?)

1.  array=range 呢個方法唔得==>  Cells() = Sheets("sheet1").Range("A1:B60")

2. range=array呢個方法又得==> Sheets("sheet1").Range("C1:D60") = cell()

=======================================================
Sub test()
Dim cell(1 To 60, 1 To 2) As String

For i = 1 To 60
cell(i, 1) = Sheets("sheet1").Cells(i, 1)
Next

Sheets("sheet1").Range("C1:D60") = cell()
End Sub
作者: 狂蜂一號    時間: 2017-4-30 02:05

回覆 1# bongbong3481

Dim cell() As Variant
作者: A字膊    時間: 2017-4-30 05:59

本帖最後由 A字膊 於 2017-4-30 06:15 編輯

Sub test()
    Dim cell() As Variant
    ReDim cell(1 To 60, 1 To 2)
    For j = 1 To 2
        For i = 1 To 60
            cell(i, j) = Sheets("sheet1").Cells(i, j)
        Next i
    Next j
    Sheets("sheet1").Range("C1:D60") = cell()
End Sub
作者: bongbong3481    時間: 2017-4-30 08:28

回覆 2# 狂蜂一號


改成下面咁,    呢句cell() = Sheets("sheet1").Range("A1:B60")都有問題

Sub test()
    Dim cell() As Variant
    ReDim cell(1 To 60, 1 To 2)
     
    cell() = Sheets("sheet1").Range("A1:B60")
    Sheets("sheet1").Range("C1:D60") = cell()
   
End Sub
作者: bongbong3481    時間: 2017-4-30 08:28

回覆 3# A字膊

改成下面咁,    呢句cell() = Sheets("sheet1").Range("A1:B60")都有問題

Sub test()
    Dim cell() As Variant
    ReDim cell(1 To 60, 1 To 2)
     
    cell() = Sheets("sheet1").Range("A1:B60")
    Sheets("sheet1").Range("C1:D60") = cell()
   
End Sub
作者: A字膊    時間: 2017-4-30 09:42

cell = ActiveSheet.Range([A1], Cells(Rows.Count, 1).End(xlUp).Offset(, 1)).Value
作者: myricky    時間: 2017-4-30 10:38

提示: 作者被禁止或刪除 內容自動屏蔽
作者: bongbong3481    時間: 2017-4-30 10:53

回覆 6# A字膊

你個方法OK , 原來要加個.value

cell() = Sheets("sheet1").Range("A1:B60").value
作者: bongbong3481    時間: 2017-4-30 10:56

本帖最後由 bongbong3481 於 2017-4-30 16:03 編輯

回覆 7# myricky

THANK YOU!  你個方法OK 啊

Worksheets("sheet1").Activate真系好重要
作者: 狂蜂一號    時間: 2017-4-30 14:56

回覆 4# bongbong3481

Sub test()
   Dim cell() As Variant
   cell = Range("A1:B60")
   Range("C1:D60") = cell
End Sub
作者: bongbong3481    時間: 2017-4-30 15:43

本帖最後由 bongbong3481 於 2017-4-30 15:45 編輯

回覆 10# 狂蜂一號

唔該晒   另外解決左我另一個問題, 原來呢種方法先可以用Range(Cells(1, 1), Cells(60000, 1))

Dim cell() As Variant
cell = Range(Cells(1, 1), Cells(60000, 1))
Range(Cells(1, 3), Cells(60000, 3)) = cell





歡迎光臨 電腦領域 HKEPC Hardware (https://www.hkepc.com/forum/) Powered by Discuz! 7.2