Khi sử dụng bảng tính chứa nhiều hơn một trang, bạn có thể để ý thấy rằng Excel không hề có chức năng tự đồng bộ tất cả các trang tính. Nói cách khác, không có chức năng nào tự động sắp xếp tất cả các trang tính có cùng dải ô và cùng định dạng ô tính góc trên cùng bên trái.
Dưới đây ta sẽ sử dụng VBA thông qua cách tạo một macro với tính năng mặc định trang tính đang hoạt động làm chuẩn và thay đổi nội dung các trang khác dựa trên trang mặc định đó, cụ thể là:
Lưu ý: Phương pháp này không áp dụng được với các trang tính bị ẩn.
Hàm thủ tục con SynchSheets
Đây là cấu trúc của hàm thủ tục:
Sub SynchSheets() ' Duplicates the active sheet's active cell upperleft cell ' Across all worksheets If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub Dim UserSheet As Worksheet, sht As Worksheet Dim TopRow As Long, LeftCol As Integer Dim UserSel As String Application.ScreenUpdating = False ' Remember the current sheet Set UserSheet = ActiveSheet ' Store info from the active sheet TopRow = ActiveWindow.ScrollRow LeftCol = ActiveWindow.ScrollColumn UserSel = ActiveWindow.RangeSelection.Address ' Loop through the worksheets For Each sht In ActiveWorkbook.Worksheets If sht.Visible Then 'skip hidden sheets sht.Activate Range(UserSel).Select ActiveWindow.ScrollRow = TopRow ActiveWindow.ScrollColumn = LeftCol End If Next sht ' Restore the original position UserSheet.Activate Application.ScreenUpdating = True End Sub
Cách dùng hàm thủ tục trên
Để khởi động hàm nói trên, hãy sao chép nó vào mô-đun khởi chạy VBA (bạn nên sử dụng Bảng Macro cá nhân). Sau đó khởi động bảng tính lên và thực hiện chạy hàm thủ tục SynchSheets. Kết quả là tất cả các trang tính sẽ có chung dải ô và định dạng ô tính góc trên bên trái tương đồng với trang tính mặc định.