Steven cần đảm bảo rằng không ai nhập thông tin vào trang tính từ 4:00 chiều đến 6:30 chiều mỗi ngày. Anh ấy tự hỏi liệu có thể sử dụng Xác thực dữ liệu để ngăn người dùng nhập thông tin vào trang tính trong một thời gian cụ thể mỗi ngày hay không.

Có hai cách chung để bạn có thể thực hiện điều này. Một cách tiếp cận là sử dụng Xác thực dữ liệu để kiểm tra thời gian và cho phép hoặc không cho phép nhập dữ liệu.

  1. Chọn tất cả các ô trong trang tính.

  2. Hiển thị tab Dữ liệu của dải băng.

  3. Bấm vào công cụ Xác thực Dữ liệu trong nhóm Công cụ Dữ liệu. Excel sẽ hiển thị hộp thoại Xác thực Dữ liệu. (Xem Hình 1.)

  4. Sử dụng danh sách thả xuống Cho phép, chọn Tùy chỉnh.

  5. Nhập thông tin sau vào hộp Công thức:

  6. Thực hiện các thay đổi trên tab Cảnh báo Lỗi, như mong muốn.

  7. Bấm OK.

Vấn đề với cách tiếp cận này là ở bước đầu tiên: Bạn cần chọn tất cả các ô trong trang tính để ngăn việc nhập dữ liệu vào bất kỳ ô nào trong số chúng. Ngoài ra, nếu bạn đã sử dụng Xác thực dữ liệu trong bất kỳ ô nào, phương pháp này sẽ ghi đè các cài đặt đó.

Vì những lý do này, có thể tốt hơn nếu sử dụng cách tiếp cận dựa trên vĩ mô. Tất cả các cách tiếp cận như vậy có thể sử dụng trình xử lý sự kiện để kiểm tra bất kỳ thay đổi nào. Phần sau dựa vào sự kiện Worksheet_Change, có nghĩa là sự kiện này chỉ được kích hoạt khi Excel phát hiện ra sự thay đổi trong trang tính.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim sMsg As String

sMsg = "No entries allowed between 4:00 pm and 6:30 pm!"

If Time >= "4:00:00 PM" And Time <= "6:30:00 PM" Then         MsgBox sMsg, vbCritical         With Application             .EnableEvents = False             .Undo   ' This undoes the change the person made             .EnableEvents = True         End With     End If End Sub

Về cơ bản, mỗi khi có sự thay đổi trong trang tính, trình xử lý sẽ kiểm tra xem liệu đó có phải là từ 4:00 chiều đến 6:30 chiều hay không. Nếu đúng như vậy, thì một hộp thông báo sẽ hiển thị để chỉ ra lỗi và sau đó phương thức .Undo được sử dụng để khôi phục bất kỳ thay đổi nào đã được thử.

Nếu muốn, bạn có thể thực hiện một cách tiếp cận khác và bảo vệ trang tính nếu nó nằm trong thời gian cấm:

Private Sub Worksheet_Activate()

If Time >= "4:00:00 PM" And Time <= "6:30:00 PM" Then         ActiveSheet.Protect         MsgBox "Worksheet is protected."

Else         ActiveSheet.Unprotect         MsgBox "You are free to edit now."

End If End Sub

Trình xử lý sự kiện Worksheet_Activate được gọi mỗi khi trang tính được kích hoạt (được chọn). Nếu trang tính được kích hoạt bất cứ lúc nào ngoài thời gian bị cấm, thì nó sẽ không được bảo vệ. Tất nhiên, người dùng vẫn có thể bỏ bảo vệ trang tính theo cách thủ công ngay cả trong thời gian bị cấm, vì vậy, bạn nên sử dụng phương pháp này kết hợp với phương pháp được kích hoạt mỗi khi cố gắng thay đổi, như đã thảo luận trước đó.

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

Mẹo này (13503) áp dụng cho Microsoft Excel 2007, 2010, 2013 và 2016.