Trên bảng tính excel có rất nhiều cột và dòng (Excel 2007 có số cột tối đa 16.384 và có số dòng tối đa là 1.048.576). Nhưng thường thì bạn hiếm khi sử dụng hết. Vì thế có nhiều lúc vô tình kéo thanh cuộn xuống dòng 500.000 mà quên kéo trở lại đến lúc gởi cho người khác xem thì không thấy dữ gì cả. Để tránh trường hợp đó thì ta phải giới hạn được vùng cuộn của bảng tính, trong bài viết này sẽ trình bày thủ thuật giới hạn vùng cuộn của bảng tính trên excel bằng cách dấu các dòng và cột không cần thiết, xác định một vùng sử dụng bằng Property hoặc chỉ kích hoạt vùng dữ liệu hiện hành.
Bạn có thể dùng cách đơn giản là dấu (Hide) những dòng và cột muốn dấu hoặc bằng cách định nghĩa 1 vùng cho phép xem hoặc chỉ kích hoạt vùng có dữ liệu.
1. Dấu dòng và cột trên Excel:
Cách dễ nhất là dấu những dòng và cột không dùng đến:
Trên sheet hiện hành, xác định dòng cuối có dữ liệu, nhấn chọn dòng dưới nó, nhấn thêm cùng lúc Ctrl Shift mũi tên xuống để chọn đến cuối dòng cuối cùng (1.048.576). Sau đó trong tab Home, chọn Format Hide & Unhide – Hide Rows trong Excel 2007 hoặc Format – Row – Hide trong 2003 trở về trước, hoặc click phải chuột và chọn Hide.
Làm tương tự như vậy để dấu những cột không dùng đến: tìm cột cuối, click chọn cột kế bên, nhấn Ctrl Shift mũi tên sang phải, chọn hide columns.
Kết quả như hình, vùng làm việc bị trùm 1 màu tăm tối chung quanh và chẳng ai có thể kéo đi đâu được nữa:
2. Xác định một vùng sử dụng bằng Property:
Bằng cách sử dụng Property của sheet trong VBA, bạn có thể ấn định vùng làm việc trong phạm vi mong muốn. Thực hiện như sau:
Nhấn chuột phải vào tên sheet trong tab Sheet Names, chọn View code, hoặc nhấn Alt F11, chọn đúng tên sheet trong cửa sổ Project Explorer, rồi xuống khung Property, tìm dòng ScrollArea gõ vào địa chỉ vùng mong muốn thí dụ $A$1:$H$50.
Quay trở lại bảng tính và thử kéo thanh cuộn, ta thấy chỉ có thể cuộn xuống đến dòng 50 và cuộn ngang đến cột H là tối đa, không cuộn được nữa.
Tuy vậy, Excel không lưu tính chất này khi lưu bảng tính, nên lần sau mở file lên phải set Property lại. Do đó ta phải viết 1 đoạn code thực hiện điều này mỗi khi kích hoạt sheet. Vào vùng soạn thảo code của đúng sheet mình muốn, chọn sự kiện worksheet_activate:
VBA excel Code:
Private Sub Worksheet_Activate ( )
Me.ScrollArea = “A1:H50”
End Sub
Bây giờ mỗi khi kích hoạt bảng tính, VBA sẽ ấn định vùng giới hạn như mong muốn.
Mặc dù không có vùng bao quanh tăm tối như cách trên, nhưng bạn không thể nào cuộn ra khỏi vùng, bạn cố chọn 1 ô nằm ngoài vùng cho phép cũng không được, kể cả cột I, J, K dù bạn có ngó thấy cũng chỉ để thèm thôi.
Thậm chí với những đoạn code VBA bạn tạo sau này, trong đó có câu lệnh select 1 vùng nằm ngoài vùng cho phép, hoặc chọn nguyên cột nguyên dòng, cũng không chọn được.
Để có thể thực thi các đoạn code trên bạn phải cho vào code 2 dòng lệnh:
Đầu code thêm dòng: ActiveSheet.ScrollArea = “”
Cuối code thêm dòng: ActiveSheet.ScrollArea = “$A$1:$G$50”
Thí dụ:
VBA excel Code:
Sub MyMacro( )
ActiveSheet.ScrollArea = “”
Range(“Z100”).Select
Selection.Font.Bold = True
ActiveSheet.ScrollArea = “$A$1:$G$50”
Sheets(“Daily Budget”).Select
ActiveSheet.ScrollArea = “”
Range (“T500”).Select
Selection.Font.Bold = False
ActiveSheet.ScrollArea = “$A$1:$H$25”
End Sub
Đoạn code trên chọn ô Z100 trong sheet hiện hành và định dạng in đậm. Sau đó chọn ô T500 trong sheet khác, định dạng in thường (không đậm). Trước khi thực hiện chọn và định dạng ở sheet nào, phải set vùng cuộn sheet đó là “”. Sau khi định dạng,set trả vùng giới hạn cuộn theo mong muốn.
3. Chỉ kích hoạt vùng dữ liệu hiện hành:
Phương pháp này linh hoạt hơn, tự động giới hạn vùng cuộn bảng tính vừa bằng vùng dữ liệu của bảng tính mà bạn đặt code sau:
VBA excel Code:
Private Sub Worksheet_Activate( )
Me.ScrollArea =Me.UsedRange. Address
End Sub
Đoạn code trên sẽ chạy mỗi khi bạn kích hoạt bảng tính mà bạn đặt code. Dù vậy cũng có hạn chế là bạn không thể thêm dữ liệu vào dòng mới hoặc cột mới. Bạn có thể mở rộng vùng giới hạn ra thêm 5 dòng và 2 cột bằng đoạn code sau:
VBA excel Code:
Private Sub Worksheet_Activate()
With Me.UsedRange
Me.ScrollArea = .Resize(.Rows.Count 5, .Columns.Count 2).Address
End With
End Sub
Còn nếu bạn muốn hơn nữa, nhập liệu thêm 1 cách thoải mái, thì dùng 1 đoạn code nhằm reset vùng cuộn bằng nguyên sheet:
VBA excel Code:
Sub ResetScrollArea( )
ActiveSheet.ScrollArea = “”
End Sub
Bạn có thể gán short key (phím tắt) cho đoạn code này bằng cách nhấn Alt F8, chọn macro ResetScrollArea, nhấn nút option, và gán 1 phím tắt thí dụ Ctrl W.
Sau này mỗi khi bạn muốn nhập liệu, nhấn Ctrl W trước khi nhập liệu. Khi nhập liệu xong, chỉ cần bạn kích hoạt 1 sheet khác xong quay lại sheet này, vùng cuộn lại bị giới hạn bởi đoạn code trên (Worksheet_Activate())
Nguồn: Tổng hợp từ Internet.
Chúc các bạn thành công!