CÔNG TY CỔ PHẦN BLUESOFTS

Xóa, chèn dòng tự động giữa hai sheet

Giả sử có bài toán như sau: Trong Sheet 1 có một vùng dữ liệu, Sheet 2 cũng có một vùng dữ liệu tương ứng. Yêu cầu bài toán là khi xóa một dòng bất kỳ ở Sheet 1 thì Sheet2 tự động xóa dòng tại vị trí đó. Tương tự với việc chèn dòng, khi Sheet 1 chèn một dòng bất kỳ thì Sheet 2 cũng sẽ chèn một dòng tương ứng với vị trí dòng dòng ở Sheet 1.

Giả sử có một vùng dữ liệu ở sheet 1 như sau:

Tương tự với Sheet2 ta cũng có vùng dữ liệu tương ứng.

Để giải quyết bài toán trên, các bạn làm theo các bước sau:

Bước 1: Copy code dưới đây vào module (vào môi trường lập trình (ALT+F11) chọn Insert-> Module để tạo mới Module và pate code dưới đây vào trong Module)

Option Explicit
Sub XoaChenDong()
    Dim lRow As Long
    Dim IQuestion As String
    IQuestion = MsgBox("Ban muon INSERT hay DELETE dong, Yes/No (Insert/delete).", vbYesNoCancel, "Thông báo")
    Sheets("Sheet1").Select
    'Luu vi tri dong can xoa vao bien lRow
    lRow = ActiveCell.Row
    Rows(lRow & ":" & lRow).Select
    IQuestion = UCase(IQuestion)
    If IQuestion = vbYes Then
        Selection.insert
        Sheets("Sheet2").Select
        Rows(lRow & ":" & lRow).Select
        Selection.insert
        GoTo exitsub
    ElseIf IQuestion = vbNo Then
        Selection.delete
        Sheets("Sheet2").Select
        Rows(lRow & ":" & lRow).Select
        Selection.delete
        GoTo exitsub
    Else
        GoTo exitsub
    End If
exitsub:
    Sheets("Sheet1").Select
End Sub
 

Bước 2: Các bạn vào mỗi trường bảng tính, Insert  một nút bấm để gán macro. Vào menu Developer -> Insert -> Button.

Sau đó các bạn đặt chuột vào một vị trí, kéo mộ vùng vừa đủ cho nút bấm, rồi gán Macro vừa tạo (XoaChenDong) vào nút bấm.

Bước 3: Sau khi hoàn thành việc gán Macro, các bạn đặt chuột vào 1 ví trí thuộc dòng bất kỳ cần chèn thêm dòng ở (mình đặt vào ô A6) tại dòng có mã hàng là HH003. Sau đó các bạn click vào nút Run -> khi đó sẽ hiển thị thông báo: "Bạn muon INSERT/DELETE dòng (I/D)". Các bạn gõ "I" (không phân biệt chữ viết hoa hay viết thường), sau đó chọn vào OK để nhận kết quả.

Sau khi click vào OK, trước dòng thứ 6 chứa mã hàng mã hàng HH003 sẽ chèn thêm một dòng.

Tương tự trước dòng thứ 6 chứa mã hàng HH004 ở sheet 2 cũng được chèn thêm một dòng ( do bảng dữ liệu ở sheet1 bắt đầu từ dòng 4, ở sheet2 bắt đầu từ dòng 3 nên khi chèn/xóa sẽ bị lệch 1 dòng).

Bước 4: Tương tự với bước 3, để xóa một dòng bất kỳ, ta cũng đặt chuột vào dòng đó, sao đó click chuột trái vào nút Run, để xóa dòng, tại hộp thoại thông báo, các bạn gõ chữ "D" sau đó click vào OK để nhận kết quả.

Sau khi click vào OK, tại sheet 1 sẽ xóa đi dòng thứ 8, dòng chứa mã hàng HH004.

Tương tự ở Sheet2, dòng sẽ bị xóa đi là dòng thứ 8, dòng chứa mã hàng HH004.

Các bạn vào đây download file ví dụ: Download

Để tìm hiểu VBA trong Excel là gì, tại sao những người làm Excel cần học VBA, các bạn tìm hiểu tại khóa Đào tạo VBA trong Excel cơ bản tại Bluesofts.net.

 

Tác giả: Hoàng Phong - Công ty Cổ phần Bluesofts