Bev có một trang tính với hai hàng tiêu đề được cố định và một cột được cố định. Sau đó, cô ấy có thể cuộn qua trang thêm dữ liệu theo tuần. Tên và tổng phụ được cố định ở bên trái, ngày trong tuần ở trên cùng. Trên tất cả điều này, trong hàng đông lạnh đầu tiên, Bev có một tiêu đề đẹp mắt mô tả sổ làm việc. Cô ấy đang tìm cách có thể đặt tiêu đề của mình (tiêu đề ở hàng đầu tiên) “nổi” để khi cô ấy cuộn qua trang, tiêu đề đó không biến mất khỏi mép của trang tính hiển thị.

Cách dễ nhất để làm điều này là đảm bảo rằng tiêu đề nằm trong ô A1.

Vì bạn đã cố định một cột và hai hàng, khi bạn cuộn đến ô bên phải A1, chứa tiêu đề, sẽ luôn hiển thị trên màn hình. (Điều này chỉ hoạt động tốt nếu toàn bộ tiêu đề vừa với ô A1, không “tràn” sang ô B1 hoặc xa hơn.)

Nếu bạn muốn một chút gì đó lạ mắt hơn với tiêu đề của mình, thì bạn cần phải thực hiện một chút với các hộp văn bản và macro. Nếu bạn đặt tiêu đề trong một hộp văn bản ở hàng đầu tiên, thì bạn có thể sử dụng một số macro để đảm bảo rằng hộp văn bản luôn được căn giữa trên màn hình trong hàng đó.

Giả sử, vì lợi ích của ví dụ này, hộp văn bản chứa tiêu đề được gọi là “TitleTextBox.” Khi bạn cuộn sang trái và phải trong trang tính, macro có thể tự động kiểm tra để đảm bảo rằng cạnh trái của hộp văn bản luôn bằng với cạnh trái của vùng màn hình hiển thị. Mã sau cần được thêm vào mã trang tính cho trang tính có chứa hộp văn bản:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

Me.Shapes("TitleTextBox").Left = ActiveWindow.VisibleRange.Left End Sub

Macro này, vì nó là một phần của mã trang tính, sẽ chạy mỗi khi vùng chọn được thay đổi trong trang tính. Do đó, khi bạn sử dụng các phím mũi tên để di chuyển sang trái hoặc phải, sử dụng các phím tab hoặc chọn một ô bằng chuột, macro sẽ chạy và đảm bảo rằng các cạnh bên trái của hộp văn bản và vùng hiển thị luôn khớp với nhau.

Khi macro này không hoạt động là khi bạn cuộn sang trái và phải bằng cách sử dụng thanh cuộn ngang ở cuối màn hình. Không có “sự kiện cuộn” nào được kích hoạt tự động khi thanh cuộn được sử dụng. Cho đến khi lựa chọn được thực hiện ở đâu đó trong phạm vi hiển thị mới, do đó kích hoạt sự kiện SelectionChange, vị trí hộp văn bản sẽ không được di chuyển.

Giải pháp duy nhất cho hạn chế này là sử dụng khả năng hẹn giờ của Visual Basic để cập nhật hộp văn bản theo định kỳ. Đoạn mã sau thực hiện nó mỗi giây, nhưng bạn có thể điều chỉnh để nó chạy ít thường xuyên hơn, nếu muốn.

Mã này được thêm vào một mô-đun VBA thông thường:

Sub UpdateTB()

If ActiveSheet.Name = "Sheet1" Then         ActiveSheet.Shapes("TitleTextBox").Left = _           ActiveWindow.VisibleRange.Left     End If     Application.OnTime Now + TimeSerial(0, 0, 1), "UpdateTB"

End Sub

Và điều này được thêm vào đối tượng sổ làm việc để khởi động bộ đếm thời gian khi sổ làm việc được mở lần đầu tiên:

Private Sub Workbook_Open()

UpdateTB End Sub

Nếu bạn sử dụng phương pháp dựa trên bộ đếm thời gian để định vị hộp văn bản, bạn sẽ không cần phải sử dụng phương pháp gắn với sự kiện SelectionChange. Phiên bản hẹn giờ chỉ cần điều chỉnh tiêu đề sau mỗi khoảng thời gian.

Có một “nhược điểm” bổ sung đối với kỹ thuật dựa trên macro bên cạnh bất kỳ sự chậm chạp nào được giới thiệu bởi mã đang chạy: mỗi khi mã chạy, nó sẽ xóa “ngăn xếp hoàn tác”. Điều này có nghĩa là bạn sẽ không thể “hoàn tác” các thay đổi mà bạn thực hiện đối với sổ làm việc nếu cầ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 (10260) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện menu cũ hơn của Excel tại đây: