Duy trì ô hoạt động (Microsoft Excel)
Sổ làm việc Excel có thể chứa bất kỳ số lượng trang tính riêng lẻ nào. Khi bạn di chuyển trong các trang tính khác nhau, Excel sẽ theo dõi ô nào được chọn trong trang tính nào. Khi bạn chuyển sang một trang tính mới, Excel sẽ kích hoạt ô hoạt động gần đây nhất trong trang tính đó. Do đó, nếu bạn chọn ô F9 lần cuối trong trang tính, đó là ô được chọn khi bạn hiển thị lại trang tính, bất kể những gì đã được chọn trong trang tính trước đó.
Tuy nhiên, đối với một số sổ làm việc, bạn có thể muốn Excel đặt ô hiện hoạt trong trang tính đã chọn giống với ô hiện hoạt trong trang tính trước đó. Không có cài đặt nào để tự động thực hiện việc này trong Excel, nhưng có một số cách bạn có thể thử. Một điều là làm theo các bước sau:
-
Giữ phím Ctrl khi bạn nhấp vào tab của trang tính mà bạn muốn chuyển đến. Hai tab trang tính bây giờ sẽ được chọn; tên có tên in đậm là tên thực sự hiển thị trên màn hình.
-
Bấm vào tab cho trang tính bạn muốn chuyển đến. Cả hai tab vẫn nên được chọn, nhưng chỉ cái bạn đã nhấp vào phải được in đậm tên của nó.
-
Giữ phím Ctrl khi bạn nhấp vào tab của trang tính mà bạn vừa để lại.
Các bước này hoạt động vì bạn đang “nhóm” các trang tính. Khi bạn làm như vậy, Excel sẽ làm cho các ô đã chọn giống nhau cho tất cả các trang tính trong nhóm.
Việc nhớ sử dụng trình tự Ctrl-click-click-Ctrl có thể khá phức tạp. Đây cũng là một trình tự có thể chứa đầy nguy hiểm, bởi vì nếu bạn quên thực hiện bước 3, bạn có thể thực hiện các thay đổi không mong muốn trên trang tính của mình. (Trong khi bạn đang làm việc với các trang tính được nhóm lại, bất kỳ thay đổi nào bạn thực hiện trên một trang tính cũng được thay đổi tương tự trên tất cả các trang tính trong nhóm.)
Ba bước này không thể được tự động hóa với macro, nhưng bạn có thể thực hiện một cách tiếp cận khác với macro để hoàn thành cùng một nhiệm vụ. Điều đầu tiên bạn cần làm là khai báo một biến công khai ở bất kỳ đâu trong mô-đun của sổ làm việc, như được hiển thị ở đây:
Public sAddress As String
Biến này, sAddress, sẽ được sử dụng để lưu trữ địa chỉ hiện tại của ô đang hoạt động. Trong mô-đun “ThisWorkbook” của sổ làm việc, hãy thêm hai macro sau:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _ ByVal Target As Excel.Range) sAddress = ActiveCell.Address End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object) On Error Resume Next If sAddress > "" Then Sh.Range(sAddress).Select End Sub
Macro đầu tiên được chạy tự động bởi Excel bất kỳ lúc nào ô đã chọn thay đổi. Tất cả những gì nó làm là truy xuất địa chỉ của bất kỳ ô nào đang hoạt động, rồi lưu trữ địa chỉ đó trong biến sAddress.
Macro thứ hai được tự động chạy bất cứ khi nào sổ làm việc được kích hoạt.
Nó kiểm tra xem có bất kỳ thứ gì được lưu trữ trong sAddress hay không. Nếu có, nó sẽ chọn bất kỳ địa chỉ ô nào được lưu trữ ở đó. Mã lỗi cần thiết trong trường hợp bạn chọn trang tính không sử dụng ô, chẳng hạn như trang tính biểu đồ.
Cách tiếp cận macro này hoạt động hiệu quả nếu bạn chỉ muốn thực hiện thay đổi điều hướng này trong một hoặc hai sổ làm việc. Nếu bạn muốn thực hiện thay đổi “trên toàn hệ thống” (có thể nói như vậy), bạn phải phức tạp hơn một chút trong cách tiếp cận macro. Trong trường hợp này, bạn cần đặt mã của mình trong sổ làm việc Personal.xls để nó được tải mỗi khi bạn khởi động Excel. Cụ thể, hãy đặt mã sau vào một mô-đun lớp mới của sổ làm việc Personal.xls. Mô-đun lớp này nên được đặt tên mô tả, chẳng hạn như ClassXLApp:
Public WithEvents gobjXLApp As Excel.Application Private mstrAddress As String Private Sub gobjXLApp_WorkbookActivate(ByVal Wb As Excel.Workbook) On Error Resume Next If mstrAddress > "" Then ActiveSheet.Range(mstrAddress).Select End Sub Private Sub gobjXLApp_SheetActivate(ByVal Sh As Object) On Error Resume Next If mstrAddress > "" Then Sh.Range(mstrAddress).Select End Sub Private Sub gobjXLApp_SheetSelectionChange(ByVal Sh As Object, _ ByVal Target As Excel.Range) mstrAddress = Selection.Address End Sub
Tiếp theo, mở mô-đun “ThisWorkbook” của Personal.xls và sao chép đoạn mã sau vào đó:
Private mobjXLApp As New ClassXLApp Private Sub Workbook_Open() Set mobjXLApp.gobjXLApp = Excel.Application End Sub
Khi bạn lưu Personal.xls và khởi động lại Excel, phạm vi trong sổ làm việc đầu tiên mở ra sẽ được chọn trong trang tính tiếp theo được chọn.
_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 (3205) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy 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: