Cố định Panes bằng VBA
Gần đây tôi đã đăng trên Ngăn đóng băng trong Excel, đây là cách bạn có thể làm điều đó bằng VBA:
Cố định hàng
Hàng ("1: 1"). Chọn ActiveWindow.FreezePanes = True
Cố định cột
Phạm vi ("A: A"). Chọn ActiveWindow.FreezePanes = True
Cố định hàng và cột
Phạm vi ("B2"). Chọn ActiveWindow.FreezePanes = True
UnFreeze Panes
ActiveWindow.FreezePanes = Sai
Buộc lưu sổ làm việc mà không đóng băng các ngăn
Excel cho phép chúng tôi kiểm soát mọi thứ thông qua các sự kiện. Bài viết này không phải là một cuộc thảo luận chi tiết về các sự kiện là gì hoặc các tính năng của chúng. Thay vào đó, nó đưa ra một ví dụ về Sự kiện WorkBook. Đây là những sự kiện được tổ chức ở cấp sổ làm việc chứ không phải là một trang tính cụ thể.
Thông qua VBA, chúng tôi có thể kiểm soát những gì xảy ra tại một số sự kiện nhất định như trước khi in hoặc trước khi lưu. Một vấn đề phổ biến mà tôi gặp phải là một số người mà tôi làm việc cùng không thích các tệp có Ngăn đóng băng trên đó.
Vì vậy, trong bài viết này, chúng ta sẽ tập hợp một số mã sẽ kiểm tra xem Freeze Panes có được bật hay không và nếu có, nó sẽ không lưu tệp. Điều này có nghĩa là tôi phải lưu nó mà không cần ngăn đóng băng - giữ cho các đồng nghiệp của tôi vui vẻ !!
Điều quan trọng nhất về các sự kiện sổ làm việc là chúng phải được lưu ở đúng nơi - ở cấp sổ làm việc.
Để truy cập cấp sổ làm việc, hãy làm theo các bước bên dưới:
1. Nhấp chuột phải vào sổ làm việc Excel - xem mã:
2. Điều này sẽ đưa ra:
3. Nhấp đúp vào “This Workbook” và sau đó chọn “Workbook” từ menu thả xuống đầu tiên ở phía bên trái:
Chúng tôi thấy rằng giá trị ở phía bên trái hiện đã thay đổi thành “Mở” - với một số mã cho Sự kiện Mở Sổ làm việc. Mã này sẽ cho phép chúng tôi xác định điều gì sẽ xảy ra khi sổ làm việc mở lần đầu tiên.
Tuy nhiên, chúng tôi muốn kiểm soát những gì sẽ xảy ra khi chúng tôi lưu sổ làm việc. Vì vậy, thay đổi trình đơn thả xuống bên phải thành “Trước khi Lưu”. Màn hình bây giờ sẽ giống như sau:
Bây giờ chúng ta chèn đoạn mã sau vào sau phần khai báo:
If ActiveWindow.FreezePanes = True Then MsgBox "Freeze Panes is on - File is NOT SAVED" Cancel = True End If
Vì vậy, mã hoàn chỉnh bây giờ trông giống như:
Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) If ActiveWindow.FreezePanes = True Then MsgBox "Freeze Panes is on - File is NOT SAVED" Cancel = True End If End Sub
Bây giờ lưu tệp và THÌ kích hoạt Freeze Panes trong bất kỳ cửa sổ nào. Sau đó - LƯU lại tệp. Một msgbox sẽ xuất hiện thông báo rằng “Freeze Panes” đang bật - và tệp không được lưu.
Thật vậy, tệp sẽ không lưu cho đến khi Freeze Panes bị xóa.