Tự động copy khi chọn sheet (1 người xem)

Liên hệ QC

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

hungdiep85

Thành viên thường trực
Tham gia
1/6/09
Bài viết
218
Được thích
23
Giới tính
Nam
Chào các Thầy
Có thề viết giúp em code tự động copy hết toàn bộ (Ctrl A & Ctrl C) khi chọn sheet .
Có nghĩa là em đang ở sheet1 sau đó em chọn qua sheet2 thì sẽ copy tất cả dữ liệu trong sheet2 , và em chọn sheet nào trong file cũng vậy.

cảm ơn các thầy
 
phải vậy không bạn

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
ActiveSheet.Select
Cells.Select
Selection.Copy
End Sub
 
Upvote 0
Dùng đoạn code này đi bạn!
PHP:
Private Sub Worksheet_Activate()
Cells.Select
Selection.Copy
End Sub
 
Upvote 0
Đúng rùi Thầy ơi , em cảm ơn Thầy nhiều ah , chúc Thầy Giáng sinh vui vẻ.

Cho hỏi: Bạn dùng cái này để làm gì vậy?
Có copy đương nhiên phải có paste đi đâu đó, đúng không? Đàng nào cũng viết code, vậy sao không viết cho nó copy rồi paste luôn cho trọn (nữa vời chẳng ngon lành gì)
 
Upvote 0
Nếu copy nguyên sheet coi chừng treo máy
Hay là copy vùng chứa dữ liệu thôi

ActiveSheet.UsedRange.Copy

Còn nếu copy cả sheet thì cho câu lệnh ngắn lại chút nữa cho đẹp

ActiveSheet.Cells.Copy
 
Upvote 0
Cho hỏi: Bạn dùng cái này để làm gì vậy?
Có copy đương nhiên phải có paste đi đâu đó, đúng không? Đàng nào cũng viết code, vậy sao không viết cho nó copy rồi paste luôn cho trọn (nữa vời chẳng ngon lành gì)



Dạ Thầy
Em paste vào file khác ah , vì dũ liệu trong nhiều file khác nhau , em mở cùng lúc nhiều file trong 1 file thành nhiều sheet , nên mỗi lần chọn 1 sheet là phải Ctrl A+Ctrl C , làm đâu hết cả tay , kaka ,

chúc Thầy Giáng sinh vui vẻ.
 
Upvote 0
Dạ Thầy
Em paste vào file khác ah , vì dũ liệu trong nhiều file khác nhau , em mở cùng lúc nhiều file trong 1 file thành nhiều sheet , nên mỗi lần chọn 1 sheet là phải Ctrl A+Ctrl C , làm đâu hết cả tay , kaka ,

chúc Thầy Giáng sinh vui vẻ.

Thì thì viết code cho nó.. LÀM TẤT đi
 
Upvote 0
bạn copy vậy nặng lắm, sao bạn không copy theo kiểu "Move or copy" rồi "create copy to"
 
Upvote 0
Nếu copy nguyên sheet coi chừng treo máy
Hay là copy vùng chứa dữ liệu thôi

ActiveSheet.UsedRange.Copy

Còn nếu copy cả sheet thì cho câu lệnh ngắn lại chút nữa cho đẹp

ActiveSheet.Cells.Copy

Chào Thầy

Tuyệt quá Thầy ơi , em cảm ơn Thầy.

ActiveSheet.UsedRange.Copy

chúc Thầy Giáng sinh vui vẻ.
 
Upvote 0
Thì thì viết code cho nó.. LÀM TẤT đi



Dạ Thầy

Em đang làm nó đó Thầy , làm đến đâu em không biết bí quá mới dám hỏi .

Dạ sẵn đây Thầy giúp em cái , em ghi bằng Macro , em muốn là khi tiềm đến ô cuối cùng có dữ liệu thì xuống 1 ô.

Sub Macro1()
'
' Macro1 Macro
'

'

Range("A1").Select
Selection.End(xlDown).Select


End Sub
 
Upvote 0
Dạ Thầy

Công lực của em chỉ có thể ghi được Macro thôi ah. kaka

chúc Thầy Giáng sinh vui vẻ.

Bạn đừng coi thường chức năng record macro nhé! Ngày trước tôi cũng học vậy thôi
Rồi chắc chắn bạn sẽ trưởng thành từ cái công cụ này thôi
-------------------------------
Sau khi ghi macro xong, có thể bỏ bớt những chổ không cần thiết, nhất là những chổ Select, Selection gì gì đó
Ví dụ:
Mã:
Sub Macro1()
    Range("A1").Select
    Selection.End(xlDown).Select
End Sub
Có thể sửa thành:
Mã:
Sub Macro1()
    Range("A1").End(xlDown).Select
End Sub
Vẫn còn Select, vậy Select là để làm gì? Có phải để Paste không? Vậy ta ghi luôn thế này
Mã:
Sub Macro1()
    Range("A1").End(xlDown).PasteSpecial
End Sub
Xong! Khỏi Select gì cả
Tuy nhiên dùng xlDown không hay bằng xlUp ---> Sửa lại
Mã:
Sub Macro1()
    Range("A60000").End(xlUp).PasteSpecial
End Sub
Và cái mà bạn nói "xuống 1 ô" chính là Offset(1)
Mã:
Sub Macro1()
    Range("A60000").End(xlUp).[COLOR=#ff0000]Offset(1)[/COLOR].PasteSpecial
End Sub
 
Upvote 0
mình cũng chỉ tập tành macro thôi bạn, đừng gọi là "thầy"
bạn ghi lại macro sau xem nó hoạt động ra sao
click chuột phải vào tap sheet, trong bảng hiện ra bạn chọn "Move or copy" , trong bảng hiện tiếp theo bạn cho sheet bạn muốn chép đến, click vào ô "create a copy".
từ từ thì bạn sẽ thay nó bằng các sheet, các workbook có name động thì lúc đó chép đi đâu cũng được. mình cũng học vba theo kiểu này
đây là dòng lệnh tìm cell cuối cùng trong cột A có chứa dữ liệu
LastRow = Range("A" & Rows.Count).End(xlUp).Row 'tim dong du lieu cuoi cung

chúc bạn mau chóng thanh công.
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ Thầy
Em paste vào file khác ah , vì dũ liệu trong nhiều file khác nhau , em mở cùng lúc nhiều file trong 1 file thành nhiều sheet , nên mỗi lần chọn 1 sheet là phải Ctrl A+Ctrl C , làm đâu hết cả tay , kaka ,

chúc Thầy Giáng sinh vui vẻ.
Thật ra giải pháp Worksheet_Activate sử dụng trong trường hợp như bạn nói sẽ không thật sự hiệu quả, nguyên nhân là thời gian bạn dán code cho từng sheet còn lâu hơn việc sử dụng phím tắt.
 
Upvote 0
Thật ra giải pháp Worksheet_Activate sử dụng trong trường hợp như bạn nói sẽ không thật sự hiệu quả, nguyên nhân là thời gian bạn dán code cho từng sheet còn lâu hơn việc sử dụng phím tắt.




Dạ Thầy

Em dan vào Thisworkbook luôn ah.

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
ActiveSheet.UsedRange.copy
End Sub
 
Upvote 0
Dạ Thầy

Em dan vào Thisworkbook luôn ah.

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
ActiveSheet.UsedRange.copy
End Sub
Chuẩn! Khi dán vào Thisbook, kích hoạt bất kỳ sheet nào thì nó tự động chọn vùng có dữ liệu để thực hiện lệnh copy.
(Mình không phải là "Thầy" nào cả, mà chỉ là "một anh cò" thôi, thầy Ndu gọi như thế là chuẩn đấy)
 
Upvote 0
Bạn đừng coi thường chức năng record macro nhé! Ngày trước tôi cũng học vậy thôi
Rồi chắc chắn bạn sẽ trưởng thành từ cái công cụ này thôi
-------------------------------
Sau khi ghi macro xong, có thể bỏ bớt những chổ không cần thiết, nhất là những chổ Select, Selection gì gì đó
Ví dụ:
Mã:
Sub Macro1()
    Range("A1").Select
    Selection.End(xlDown).Select
End Sub
Có thể sửa thành:
Mã:
Sub Macro1()
    Range("A1").End(xlDown).Select
End Sub
Vẫn còn Select, vậy Select là để làm gì? Có phải để Paste không? Vậy ta ghi luôn thế này
Mã:
Sub Macro1()
    Range("A1").End(xlDown).PasteSpecial
End Sub
Xong! Khỏi Select gì cả
Tuy nhiên dùng xlDown không hay bằng xlUp ---> Sửa lại
Mã:
Sub Macro1()
    Range("A60000").End(xlUp).PasteSpecial
End Sub
Và cái mà bạn nói "xuống 1 ô" chính là Offset(1)
Mã:
Sub Macro1()
    Range("A60000").End(xlUp).[COLOR=#ff0000]Offset(1)[/COLOR].PasteSpecial
End Sub




ah........Làm được rùi Thầy ơi , cảm ơn Thầy rất nhiêu , kakakaka
 
Upvote 0
Web KT

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

Back
Top Bottom