Vấn đề Copy trong VBA

Liên hệ QC

Hoàng Trọng Nghĩa

Chuyên gia GPE
Thành viên BQT
Moderator
Tham gia
17/8/08
Bài viết
8,662
Được thích
16,718
Giới tính
Nam
Tôi Copy 1 cell với 1 cell bằng phương thức như:
[B1] = [A1] thì OK

Nhưng tôi lại làm với khối cell:
[B1:B5] = [A1:A5] thì không được, tại sao?

Cách nào copy nhanh cho khối ô từ Sheet1 qua Sheet2 mà không cần chọn Select như VD sau :
PHP:
Sheet1.Range("I16:K20").Copy
Sheet2.Range("I10:K14").Select
ActiveSheet.Paste
Application.CutCopyMode = False

Xin cảm ơn các Anh Chị.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Anh dùng cái này thử:
Mã:
Sheet2.Range("a1:a5").Value = Sheet1.Range("B1:B5").Value
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Anh thử 2 dòng code này nha :
PHP:
Sheet2.[A1:A10] = Sheet1.[A1:A10].Value
Sheet1.[A1:A10].Copy Destination:=Sheet2.[A1]
 
Upvote 0
Em thử có lỗi gì đâu anh. Anh thử gửi file bị lỗi hay cái ảnh chụp lại chổ báo lỗi nha.
 
Upvote 0
Em thử có lỗi gì đâu anh. Anh thử gửi file bị lỗi hay cái ảnh chụp lại chổ báo lỗi nha.

Mình thử dòng code này nó báo lỗi.
attachment.php
 
Lần chỉnh sửa cuối:
Upvote 0
anh gửi kèm file lên gộp chung trong bài vừa rồi nha. Có file dễ xem hơn anh ơi.
 
Upvote 0
Tôi Copy 1 cell với 1 cell bằng phương thức như:
[B1] = [A1] thì OK

Nhưng tôi lại làm với khối cell:
[B1:B5] = [A1:A5] thì không được, tại sao?

Cách nào copy nhanh cho khối ô từ Sheet1 qua Sheet2 mà không cần chọn Select như VD sau :
PHP:
Sheet1.Range("I16:K20").Copy
Sheet2.Range("I10:K14").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Xin cảm ơn các Anh Chị.

Bạn thử cách này xem (tôi gộp tất cả các câu hỏi của bạn vào chung 1 sub)

Mã:
Sub Macro1()
  [B10] = [A10]
  [B1:B5] = [A1:A5].Value
  Sheet1.[I16:K20].Copy Sheet2.[I10]
End Sub
 
Upvote 0
anh gửi kèm file lên gộp chung trong bài vừa rồi nha. Có file dễ xem hơn anh ơi.

Minh có làm file nào đâu, mở 1 file trắng rồi thử code thôi. Nhưng Code thứ 1 của Danh đã OK, còn code có destination thì chưa ổn đối với mình.

Chỉ cần làm được không cần select là đã giải quyết được vấn đề rồi.

Cám ơn rất nhiều.
 
Upvote 0
Em không biết là anh test ra sao nên không trả lời được. Em gửi file đính kèm, anh xem có lỗi không nha.
 

File đính kèm

  • Code Copy.xls
    29 KB · Đọc: 303
Upvote 0
Tôi Copy 1 cell với 1 cell bằng phương thức như:
[B1] = [A1] thì OK

Nhưng tôi lại làm với khối cell:
[B1:B5] = [A1:A5] thì không được, tại sao?

Cách nào copy nhanh cho khối ô từ Sheet1 qua Sheet2 mà không cần chọn Select như VD sau :
PHP:
Sheet1.Range("I16:K20").Copy
Sheet2.Range("I10:K14").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Xin cảm ơn các Anh Chị.
Bạn nên dùng cách gán value của domfootwear vì nó nhanh hơn so với phương thức copy paste
 
Upvote 0
Tôi Copy 1 cell với 1 cell bằng phương thức như:
[B1] = [A1] thì OK

Nhưng tôi lại làm với khối cell:
[B1:B5] = [A1:A5] thì không được, tại sao?

Cách nào copy nhanh cho khối ô từ Sheet1 qua Sheet2 mà không cần chọn Select như VD sau :
PHP:
Sheet1.Range("I16:K20").Copy
Sheet2.Range("I10:K14").Select
ActiveSheet.Paste
Application.CutCopyMode = False

Xin cảm ơn các Anh Chị.
Theo mình trong vba khối ô không chấp nhận gán giá trị như thế, bạn chỉ gán được giá trị vào một khối ô khi đó là giá trị duy nhất. td: range("b1:j1")=range("a1").value
Còn muốn gán như bạn phải dùng copy
Thân
 
Upvote 0
Theo mình trong vba khối ô không chấp nhận gán giá trị như thế, bạn chỉ gán được giá trị vào một khối ô khi đó là giá trị duy nhất. td: range("b1:j1")=range("a1").value
Còn muốn gán như bạn phải dùng copy
Thân
Bậy nè... sao lại không được!
Như trong ví dụ của tác giả, ta dùng code sau:
PHP:
Sub Test()
  Sheets("Des").Range("I10:K14").Value = Sheets("Src").Range("I16:K20").Value
End Sub
Với Src là tên sheet nguồn và Des là tên sheet đích
 

File đính kèm

  • Test.xls
    22 KB · Đọc: 192
Upvote 0
Như các Thầy hướng dẫn, em được biết thêm 2 cách copy mới:

1) Copy toàn bộ, kể cả định dạng (Trung Chinh):


Sheet1.[I16:K20].Copy Sheet2.[I10]


2) Copy giá trị, như past special, value (ndu96081631, domfootwear )


Sheets("Des").Range("I10:K14").Value = Sheets("Src").Range("I16:K20").Value


Cám ơn các Thầy nhiều thật nhiều nhé!
 
Upvote 0
Nhờ các anh giúp đỡ

Các bác ơi giúp em với.
Em muốn copy tất cả các dòng có điều kiện là '003' trong cột 'DEPTCD' sang 'Sheet2', 'APO' trong cột 'DEPTCD' sang 'Sheet3' và các điều kiện còn lại sang các Sheet còn lại. Hướng giải quyết như thế nào. Các anh giúp em với.
test.gif
 

File đính kèm

  • test.xls
    25.5 KB · Đọc: 30
Upvote 0
Em muốn copy tất cả các dòng có điều kiện là '003' trong cột 'DEPTCD' sang 'Sheet2', 'APO' trong cột 'DEPTCD' sang 'Sheet3' và các điều kiện còn lại sang các Sheet còn lại. Hướng giải quyết như thế nào. Các anh giúp em với.
test.gif

Mời bạn tham khảo code sau:
[highlight=vb]
Sub mCopy()
Dim iRow As Long, myRange As Range
iRow = Sheet1.[B65536].End(xlUp).Row
Set myRange = Sheet1.Range("A1:E" & iRow)
Sheets(Array("Sheet2", "Sheet3", "Sheet4")).Select: Selection.Cells.ClearContents
'-----------------------------------------------------
With myRange
.AutoFilter Field:=1, Criteria1:="003"
.CurrentRegion.Copy Sheet2.[A1]
'-----------------------------------------------------
.AutoFilter Field:=1, Criteria1:="APO"
.CurrentRegion.Copy Sheet3.[A1]
'-----------------------------------------------------
.AutoFilter Field:=1, Criteria1:="<>APO", Operator:=xlAnd, Criteria2:="<>003"
.CurrentRegion.Copy Sheet4.[A1]
End With
'-----------------------------------------------------
Application.CutCopyMode = False
End Sub

[/highlight]
 

File đính kèm

  • test.xls
    46 KB · Đọc: 134
Lần chỉnh sửa cuối:
Upvote 0
Mời bạn tham khảo code sau:
[highlight=vb]
Sub mCopy()
Dim iRow As Long, myRange As Range
iRow = Sheet1.[B65536].End(xlUp).Row
Set myRange = Sheet1.Range("A1:E" & iRow)
Sheets(Array("Sheet2", "Sheet3", "Sheet4")).Select: Selection.Cells.ClearContents
'-----------------------------------------------------
With myRange
.AutoFilter Field:=1, Criteria1:="003"
.CurrentRegion.Copy Sheet2.[A1]
'-----------------------------------------------------
.AutoFilter Field:=1, Criteria1:="APO"
.CurrentRegion.Copy Sheet3.[A1]
'-----------------------------------------------------
.AutoFilter Field:=1, Criteria1:="<>APO", Operator:=xlAnd, Criteria2:="<>003"
.CurrentRegion.Copy Sheet4.[A1]
End With
'-----------------------------------------------------
Application.CutCopyMode = False
End Sub

[/highlight]

Mình xin cảm ơn Cadafi rất nhiều. Chúc bạn luôn luôn vui vẻ và gặp nhiều may mắn.
 
Upvote 0
Mời bạn tham khảo code sau:
[highlight=vb]
Sub mCopy()
Dim iRow As Long, myRange As Range
iRow = Sheet1.[B65536].End(xlUp).Row
Set myRange = Sheet1.Range("A1:E" & iRow)
Sheets(Array("Sheet2", "Sheet3", "Sheet4")).Select: Selection.Cells.ClearContents
'-----------------------------------------------------
With myRange
.AutoFilter Field:=1, Criteria1:="003"
.CurrentRegion.Copy Sheet2.[A1]
'-----------------------------------------------------
.AutoFilter Field:=1, Criteria1:="APO"
.CurrentRegion.Copy Sheet3.[A1]
'-----------------------------------------------------
.AutoFilter Field:=1, Criteria1:="<>APO", Operator:=xlAnd, Criteria2:="<>003"
.CurrentRegion.Copy Sheet4.[A1]
End With
'-----------------------------------------------------
Application.CutCopyMode = False
End Sub

[/highlight]

Bạn cadafi ơi!
Bạn giúp mình 1 lần nữa hen. Mình muốn chép tất cả các dòng có điều kiện không phải là '<>NKO', '<>CRO', '<>APO', '<>003', '<>AHO', '<>CAD' trong cột 'DEPTCD' sang 'Sheet4' thì mình phải làm sao. Nếu dùng

.AutoFilter Field:=1, Criteria1:="<>APO", Operator:=xlAnd, Criteria2:="<>003"
.CurrentRegion.Copy Sheet4.[A1]

Chỉ được 2 điều kiện, 2 câu lệnh này nếu chạy trong 'Sheets' thì được, khi mình đưa vào Add-Ins thì báo lỗi.

Và mình muốn sao khi chép qua các 'Sheet' sẽ bỏ luôn dòng
| DEPTCD | BRCD | ACCTCD | DUCHI | CCY |


Bạn giúp mình lần này nữa hen. Thanks bạn rất nhiều.
 
Lần chỉnh sửa cuối:
Upvote 0
Bậy nè... sao lại không được!
Như trong ví dụ của tác giả, ta dùng code sau:
PHP:
Sub Test()
  Sheets("Des").Range("I10:K14").Value = Sheets("Src").Range("I16:K20").Value
End Sub
Với Src là tên sheet nguồn và Des là tên sheet đích

Anh Ndu ơi, anh giúp em đoạn code copy 1 cell (ở đây là định dạng của 1 trang in) cố định sang nhiều cell khác (trang in khác) với 1 hộp thoại hỏi số trang cần past với được không anh. em tìm trên các diễn đàn mà không được. Em có hỏi anh mấy lần mà chưa thấy anh trả lời, không biết mọi người có bận không nữa.
 
Upvote 0
Bậy nè... sao lại không được!<BR>Như trong ví dụ của tác giả, ta dùng code sau:<BR>
PHP:
<BR>Sub Test()<BR>&nbsp;&nbsp;Sheets("Des").Range("I10:K14").Value = Sheets("Src").Range("I16:K20").Value<BR>End Sub
<BR>Với Src là tên sheet nguồn và Des là tên sheet đích
<BR><BR>

Anh Ndu ơi, anh giúp em đoạn code copy 1 cell (ở đây là định dạng của1 trang in) cố định sang nhiều cell khác (trang in khác) với 1 hộp thoại hỏi số trang cần past với được không anh. em tìm trên các diễn đàn mà không được. Em có hỏi anh mấy lần mà chưa thấy anh trả lời, không biết mọi người có bận không nữa. Em tham khảo vàlàm đựơc đoạn copy khối cell này sang khối cell khác còn để past thành nhiều khối cell thì lại chưa được. anh giúp em với.
 
Upvote 0
Web KT

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

Back
Top Bottom