Sự kiện WorkBook - Không lưu bằng Freeze Panes - Ví dụ về mã VBA

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.

Bạn sẽ giúp sự phát triển của trang web, chia sẻ trang web với bạn bè

wave wave wave wave wave