[error"13"_type Mismatch] ubound bị lỗi (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

vu198hung

Thành viên mới
Tham gia
2/5/10
Bài viết
1
Được thích
0
Gửi các anh chị,

Em định sao chép dữ liệu từ file [source.xls] sang [dest.xlsm].
Bị lỗi ở dòng:
For i = LBound(Arr, 1) To UBound(Arr, 1)

Ai biết sửa lại dùm:

--
Sub Macro1A()
Dim Arr As Variant
Dim i As Integer
Set Arr = Array("A:A", "B:B", "C:C", "D:D", "E:E", "F:F", "G:G", _
"H:H", "I:I", "K:K", "L:L")
For i = LBound(Arr, 1) To UBound(Arr, 1)

Application.Workbooks("source.xls").Worksheets("Sheet1").Range(Arr(i)).copy
Application.Workbooks("dest.xlsm").Worksheets("Sheet1").Range("A1").Offset(1, i).Paste
Next i

End Sub


--
Nếu có thể, bác nào cao thủ, chỉ dùm cách gom:
1/ Array ("A:A", "B:B"... --> Array ("A:B",...
và copy, paste.
Excel ko cho copy,paste vùng dữ liệu ko liên tục. *_*

2/ Có cách nào chỉ rõ số hàng định copy ko:
VD:
i= range("A:A").end(xlUp).row
Và đổi thành:
Array ("A" & i & ":B" & i, "D" & i & ":G" & i,....

Sau đó paste liên tiếp các range vào: [Workbooks("dest.xlsm").Worksheets("Sheet1")]

Em mới tiếp xúc VBA, còn nhiều bở ngở +-+-+-+, anh chị nào biết, giải đáp giúp em.
Cảm ơn các anh chị nhiều!
 
Lần chỉnh sửa cuối:
Gửi các anh chị,

Em định sao chép dữ liệu từ file [source.xls] sang [dest.xlsm].
Bị lỗi ở dòng:
For i = LBound(Arr, 1) To UBound(Arr, 1)

Ai biết sửa lại dùm:

--
Sub Macro1A()
Dim Arr As Variant
Dim i As Integer
Set Arr = Array("A:A", "B:B", "C:C", "D:D", "E:E", "F:F", "G:G", _
"H:H", "I:I", "K:K", "L:L")
For i = LBound(Arr, 1) To UBound(Arr, 1)

Application.Workbooks("source.xls").Worksheets("Sheet1").Range(Arr(i)).copy
Application.Workbooks("dest.xlsm").Worksheets("Sheet1").Range("A1").Offset(1, i).Paste
Next i

End Sub


--
Nếu có thể, bác nào cao thủ, chỉ dùm cách gom:
1/ Array ("A:A", "B:B"... --> Array ("A:B",...
và copy, paste.
Excel ko cho copy,paste vùng dữ liệu ko liên tục. *_*

2/ Có cách nào chỉ rõ số hàng định copy ko:
VD:
i= range("A:A").end(xlUp).row
Và đổi thành:
Array ("A" & i & ":B" & i, "D" & i & ":G" & i,....

Sau đó paste liên tiếp các range vào: [Workbooks("dest.xlsm").Worksheets("Sheet1")]

Em mới tiếp xúc VBA, còn nhiều bở ngở +-+-+-+, anh chị nào biết, giải đáp giúp em.
Cảm ơn các anh chị nhiều!

Về lỗi Ubound(Arr,1).. :
Bạn bỏ thay Set Arr = Array(..) bằng Arr = Array(....)
Đây là mảng 1 chiều nên : Ubound(Arr,1) = Ubound(Arr)
 
Upvote 0
Gửi các anh chị,

Em định sao chép dữ liệu từ file [source.xls] sang [dest.xlsm].
Bị lỗi ở dòng:
For i = LBound(Arr, 1) To UBound(Arr, 1)

Ai biết sửa lại dùm:

--
Sub Macro1A()
Dim Arr As Variant
Dim i As Integer
Set Arr = Array("A:A", "B:B", "C:C", "D:D", "E:E", "F:F", "G:G", _
"H:H", "I:I", "K:K", "L:L")
For i = LBound(Arr, 1) To UBound(Arr, 1)

Application.Workbooks("source.xls").Worksheets("Sheet1").Range(Arr(i)).copy
Application.Workbooks("dest.xlsm").Worksheets("Sheet1").Range("A1").Offset(1, i).Paste
Next i

End Sub


--
Nếu có thể, bác nào cao thủ, chỉ dùm cách gom:
1/ Array ("A:A", "B:B"... --> Array ("A:B",...
và copy, paste.
Excel ko cho copy,paste vùng dữ liệu ko liên tục. *_*

2/ Có cách nào chỉ rõ số hàng định copy ko:
VD:
i= range("A:A").end(xlUp).row
Và đổi thành:
Array ("A" & i & ":B" & i, "D" & i & ":G" & i,....

Sau đó paste liên tiếp các range vào: [Workbooks("dest.xlsm").Worksheets("Sheet1")]

Em mới tiếp xúc VBA, còn nhiều bở ngở +-+-+-+, anh chị nào biết, giải đáp giúp em.
Cảm ơn các anh chị nhiều!

Hình như chỗ khai báo
có lẽ chưa ổn
 
Upvote 0
Gửi các anh chị,
....
--
Nếu có thể, bác nào cao thủ, chỉ dùm cách gom:
1/ Array ("A:A", "B:B"... --> Array ("A:B",...
và copy, paste.
Excel ko cho copy,paste vùng dữ liệu ko liên tục. *_*

2/ Có cách nào chỉ rõ số hàng định copy ko:
VD:
i= range("A:A").end(xlUp).row
Và đổi thành:
Array ("A" & i & ":B" & i, "D" & i & ":G" & i,....

Sau đó paste liên tiếp các range vào: [Workbooks("dest.xlsm").Worksheets("Sheet1")]

Em mới tiếp xúc VBA, còn nhiều bở ngở +-+-+-+, anh chị nào biết, giải đáp giúp em.
Cảm ơn các anh chị nhiều!

- mình chưa sửa được lỗi bạn đã nêu ở #1, +-+-+-+

- còn 2 vấn đề trên thì thử làm theo cách sau:
Mã:
Sub Copy_MultiColumns()
Dim iRow            As Long
Dim tmpArray        As Variant
Dim cellsToCopy     As Range
    
    iRow = Range("A" & Rows.Count).End(xlUp).Row
    tmpArray = Array("A2:A" & iRow, "C2:C" & iRow, "E2:G" & iRow)
    
    'MsgBox UBound(tmpArray)
    
    For i = 0 To UBound(tmpArray)
        If cellsToCopy Is Nothing Then
            Set cellsToCopy = Range(tmpArray(i))
        Else
            Set cellsToCopy = Union(cellsToCopy, Range(tmpArray(i)))
        End If
    Next i
    
    cellsToCopy.Copy Destination:=Range("J5")
    
    Set cellsToCopy = Nothing
End Sub

- bạn tải file đính kèm để kiểm tra: khi copy nhiều cột xen kẽ + muốn nhanh --> nên dùng thêm Union.
 

File đính kèm

Upvote 0

Bài viết mới nhất

Back
Top Bottom