Bill có macro “trước khi lưu” kiểm tra ba ô. Nếu các ô trống, thì macro ngăn người dùng lưu. Nói cách khác, họ được yêu cầu điền vào các ô trước khi có thể lưu sổ làm việc.

Bill muốn lưu sổ làm việc này dưới dạng mẫu, nhưng khi anh ta xóa ba ô, macro cũng ngăn anh ta lưu dưới dạng mẫu. Anh ấy muốn mẫu phải “sạch”, với mặc định là ba ô trống. Người dùng sẽ tạo một sổ làm việc mới dựa trên mẫu và sau đó (chính xác) không thể lưu trừ khi các ô được điền vào.

Bill tự hỏi làm thế nào anh ta có thể lưu sổ làm việc dưới dạng mẫu, với ba ô trống.

Thực tế có một số cách tiếp cận khác nhau mà bạn có thể thực hiện để lưu mẫu của mình.

Đầu tiên là thay đổi tên sổ làm việc của bạn thành một cái gì đó khá bí truyền, chẳng hạn như X27TT3W.xlsm. Sau đó, thêm một số logic vào macro “trước khi lưu” của bạn để kiểm tra xem tên của sổ làm việc cơ sở có phải là X27TT3W hay không. Nếu đúng như vậy, thì hãy cho phép lưu sổ làm việc (hoặc mẫu) bất kể điều kiện của ba ô. Sau khi mẫu được lưu, bạn có thể đổi tên nó trong Windows thành tên mong muốn và có thể chia sẻ nó với người dùng của bạn. Trừ khi họ đoán được tên bí truyền mà bạn đã chọn, nếu không họ sẽ không thể lưu sổ làm việc mà không đảm bảo rằng ba ô đã được điền.

Một cách tiếp cận khác là chỉ cần thêm một trình xử lý sự kiện khác vào sổ làm việc của bạn — trình xử lý sự kiện này thực thi khi bạn mở sổ làm việc lần đầu — để xóa nội dung của ba ô. Đây có thể là một cái gì đó đơn giản, như thế này:

Private Sub Workbook_Open()

Sheet1.Cells(1,1).Clear     Sheet1.Cells(2,1).Clear     Sheet1.Cells(3,1).Clear End Sub

Macro này xóa các ô tại A1: A3. Nếu bạn muốn xóa một phạm vi khác, chỉ cần thay đổi ba dòng để phản ánh những ô bạn muốn xóa. Sau đó, đặt một cái gì đó vào ba ô (để nó vượt qua thử nghiệm của bạn trong macro “trước khi lưu”) và lưu nó dưới dạng mẫu.

Một cách tiếp cận khác rất dễ thực hiện là chỉ cần tắt các sự kiện trước khi bạn lưu mẫu. Điều này không được thực hiện trong macro, nhưng trong cửa sổ ngay lập tức trong Visual Basic Editor. Tất cả những gì bạn cần làm là nhập vào dòng duy nhất này:

Application.EnableEvents = False

Lưu ngay sổ làm việc của bạn dưới dạng mẫu, rồi nhập dòng sau vào cửa sổ ngay lập tức của Visual Basic Editor:

Application.EnableEvents = True

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (13547) áp dụng cho Microsoft Excel 2007, 2013, 2016, 2019 và Excel trong Office 365.