Giớihạnvùngcuộncủabảngtính
. Nếu bạn không muốn thanh cuộn kéo bảngtính lên xuống hoặc
qua phải nhiều, hoặc bạn có dữ liệu ở 1 vùng nào đó mà không
muốncho nguời dùng xem, bạn có thể giớihạnvùng nhìn được
của bảngtính trong phạm vi bạn cho phép.
Các bảngtính tạo bởi Excel 2007 có số cột tối đa 16.384, Excel
trước đó là 256 (từ A đến IV), và có số dòng tối đa là 1.048.576 (trước đó là 65.536). Nhưng
thường thì bạn hi
ếm khi sử dụng hết. Bạn có thể giớihạn chỉ cho người dùng xem trong 1 phạm
vi nào đó, còn dữ liệu nhạy cảm, bạn để ngoài vùng đó. Ngoài ra nó còn hạn chế khi ai đó vô tình
kéo thanh cuộn xuống dòng 500.000 và đến lượt người khác la làng rằng kéo mãi chẳng thấy cái
gì mà xem.
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:
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 1 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ảngtí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:
PHP 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ùnggiớihạ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ụ:
PHP 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ùngcuộn sheet
đó là “”. Sau khi định dạng,set trả vùnggiớihạncuộ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ớihạnvùngcuộnbảngtính vừa bằngvùng dữ liệucủa
bảng tính mà bạn đặt code sau:
PHP 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ảngtí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ùnggiớihạn ra thêm 5 dòng và 2 cột bằng
đoạn code sau:
PHP Code:
Private Sub Worksheet_Activate()
With Me.UsedRange
Me.ScrollArea = .Resize(.Rows.Count + 5, .Columns.Count + 2).Add
ress
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ùngcuộnbằng nguyên sheet:
PHP 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ùngcuộn lại bị giớihạn bởi đoạncode
trên (Worksheet_Activate())
. Giới hạn vùng cuộn của bảng tính
. Nếu bạn không muốn thanh cuộn kéo bảng tính lên xuống hoặc
qua phải nhiều, hoặc bạn có dữ liệu ở 1 vùng nào. 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:
PHP Code:
Private