Tự động sao chép mã bảng tính (Microsoft Excel)
Tim lưu ý chính xác rằng người dùng có thể bấm chuột phải vào tab trang tính, sau đó chọn Mã Chế độ xem để mở bảng mã VBA cho trang tính. Anh ấy có mã được viết để tự động thao tác các ô, cột và hàng. Mã này cần có sẵn trên mọi trang tính trong sổ làm việc, ngay cả khi người dùng thêm trang tính mới. Tim tự hỏi liệu có cách nào, bằng cách sử dụng VBA, để tự động sao chép mã của một trang tính sang một trang tính mới trong sổ làm việc.
Có một số cách bạn có thể tiếp cận vấn đề này. Một cách — và có lẽ là cách đơn giản nhất — là xoá macro khỏi bảng mã của trang tính và chuyển chúng sang mô-đun ThisWorkbook. Bảng mã của trang tính là những gì bạn thấy khi bấm chuột phải vào tab trang tính. Mã trong trang tính đó nhằm xử lý các sự kiện xảy ra trong trang tính và chỉ trong trang tính đó. Nếu bạn di chuyển mã sang mô-đun ThisWorkbook, thì các sự kiện vẫn có thể được xử lý, nhưng những sự kiện đó áp dụng cho tất cả các trang tính trong sổ làm việc.
Ví dụ: khi bạn nhấp chuột phải vào tab trang tính và nhìn vào cửa sổ mã, ban đầu bạn đang làm việc trong sự kiện Worksheet_SelectionChange. Nếu bạn muốn di chuyển mã này sang mô-đun ThisWorkbook, bạn có thể đặt nó trong sự kiện Workbook_SheetChange.
Nếu một “thay đổi cấp độ” mã của bạn không hoạt động vì lý do nào đó, thì một cách tiếp cận khác là tạo một trang tính mẫu trong sổ làm việc.
Đặt cho nó một cái tên chẳng hạn như “MyMaster” và đảm bảo rằng nó bao gồm tất cả mã mà bạn muốn thêm vào trang tính mới tạo của mình. Bạn thậm chí có thể ẩn trang tính này, nếu muốn, vì vậy nó không làm người dùng phân tâm. Sau đó, đặt macro sau vào mô-đun ThisWorkbook:
Private Sub Workbook_NewSheet(ByVal Sh As Object) Dim tmpName As String tmpName = Sh.Name Sheets("MyMaster").Copy Before:=Sheets(Sh.Name) Application.DisplayAlerts = False Sheets(Sh.Name).Delete Application.DisplayAlerts = True Sheets("MyMaster (2)").Name = tmpName End Sub
Mã này được kích hoạt mỗi khi một trang tính mới được thêm vào sổ làm việc. Nó nhìn vào tên của trang tính mới được thêm vào (sẽ giống như “Sheet4”) và lưu tên đó vào một biến tạm thời.
Sau đó, mã sao chép trang tính MyMaster vào sổ làm việc (cũng sao chép macro trong trang tính), xóa trang tính đã được tạo ban đầu, sau đó đổi tên bản sao MyMaster mới để có cùng tên với trang tính gốc.
_Lưu ý: _
Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.
ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.
Mẹo này (7880) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: