Tự động thêm dòng ở sheet2

Liên hệ QC

Duong gia

Thành viên thường trực
Tham gia
15/1/07
Bài viết
352
Được thích
118
Chào các bác. Mong các bác giúp đỡ vấn đề sau: Giả sử file excel có 2 sheet. Ở Sheet1 chứa mã hàng, tên hàng ... và tôi đặt A1:D20 là CSDL. Sheet2 tôi đặt vùng dữ liệu từ A1:D20 là CSDL1. Khi ta insert thêm mã hàng mới ở sheet1 thì tự động sheet2 cũng insert thêm dòng và có mã hàng tương ứng. Mong các Bác viết đoạn code cho cv này. Cám ơn rất nhiều.
 
Lần chỉnh sửa cuối:
Chào các bác. Mong các bác giúp đỡ vấn đề sau: Giả sử file excel có 2 sheet. Ở Sheet1 chứa mã hàng, tên hàng ... và tôi đặt A1:D20 là CSDL. Sheet2 tôi đặt vùng dữ liệu từ A1:D20 là CSDL1. Khi ta insert thêm mã hàng mới ở sheet1 thì tự động sheet2 cũng insert thêm dòng và có mã hàng tương ứng. Mong các Bác viết đoạn code cho cv này. Cám ơn rất nhiều.
Dùng sự kiện activate tại sheet2
PHP:
Private Sub Worksheet_Activate()
Gan
End Sub
PHP:
Sub Gan()
Dim eRow As Long
With Sheet1
    eRow = .[a65000].End(xlUp).Row
    .Range("A1:D" & eRow).Name = "CSDL01"
    Sheet2.Range("A1:D" & eRow).Value = .Range("A1:D" & eRow).Value
End With
Sheet2.Range("A1:D" & eRow).Name = "CSDL02"
End Sub
 
Dùng sự kiện activate tại sheet2
PHP:
Private Sub Worksheet_Activate() Gan End Sub
PHP:
Sub Gan() Dim eRow As Long With Sheet1     eRow = .[a65000].End(xlUp).Row     .Range("A1:D" & eRow).Name = "CSDL01"     Sheet2.Range("A1:D" & eRow).Value = .Range("A1:D" & eRow).Value End With Sheet2.Range("A1:D" & eRow).Name = "CSDL02" End Sub
Cám ơn Bác ThuNghi. Bác sửa một chút giúp em với vì mục đích của em là CSDL02 thể hiện Doanh thu còn vùng bên dưới CSDL02 dùng để thể hiện Chi phí lấy từ sheet khác. KQKD là Doanh thu - Chi phí. Nếu dùng đoạn code của bác thì không được, vì nó sẽ xóa hết vùng dữ liệu bên dưới. Thanks
 
Lần chỉnh sửa cuối:
Dùng sự kiện activate tại sheet2
PHP:
Private Sub Worksheet_Activate()
Gan
End Sub
PHP:
Sub Gan()
Dim eRow As Long
With Sheet1
    eRow = .[a65000].End(xlUp).Row
    .Range("A1:D" & eRow).Name = "CSDL01"
    Sheet2.Range("A1:D" & eRow).Value = .Range("A1:D" & eRow).Value
End With
Sheet2.Range("A1:D" & eRow).Name = "CSDL02"
End Sub
Dùng event Active của Worksheet 2 như này rất hay, code viết gọn và đơn giản, dễ kiểm soát. Nhưng cũng có 1 chút hạn chế, ví dụ ở 1 sheet khác sheet2 có dùng công thức tham chiếu đến vùng CSDL ở sheet 2 này, khi ta thay đổi CSDL1 ở sheet1 thì các công thức tham chiếu kia sẽ không được cập nhật cho tới khi sheet 2 được Active.
 
Sub Gan()
Dim eRow As
Long
With Sheet1
eRow
= .[a65000].End(xlUp).
Row
.Range("A1:D" & eRow).Name =
"CSDL01"
Sheet2.Range("A1:D" & eRow).Value = .Range("A1:D" & eRow).
Value
End With
Sheet2
.Range("A1:D" & eRow).Name =
"CSDL02"
End Sub
 
Web KT
Back
Top Bottom