Mục lục:
Video: You Bet Your Life: Secret Word - Tree / Milk / Spoon / Sky 2025
Có hai loại sự kiện bạn có thể sử dụng trong lập trình VBA cho Excel 2016 mà không liên kết với các đối tượng: thời gian và bấm phím. Bởi vì thời gian và các phím bấm không liên quan đến một đối tượng cụ thể như là một bảng tính hoặc một bảng tính, bạn lập trình các sự kiện này trong một mô-đun VBA bình thường.
Sự kiện OnTime
Sự kiện OnTime xảy ra khi một thời điểm cụ thể xảy ra. Ví dụ sau minh họa làm thế nào để Excel để thực hiện một thủ tục khi 3 p. m. sự kiện xảy ra. Trong trường hợp này, một tiếng rô-bốt cho bạn thức dậy, kèm theo một hộp tin nhắn:
Ứng dụng Set SetAlarm (). OnTime 0. 625, "DisplayAlarm" End Sub Sub DisplayAlarm () ứng dụng. Phát biểu. Nói ("Hey, thức dậy") MsgBox "Đã đến giờ nghỉ trưa! "End Sub
Trong ví dụ này, phương pháp OnTime của đối tượng Application được sử dụng. Phương pháp này mất hai đối số: thời gian (0,625 hoặc 3: 00 p. M.) Và tên của thủ tục phụ để thực hiện khi sự kiện thời gian xảy ra (DisplayAlarm).
Quy trình này khá hữu ích nếu bạn có khuynh hướng bị cuốn vào công việc của bạn mà quên đi các cuộc họp và cuộc hẹn. Chỉ cần thiết lập sự kiện OnTime để nhắc nhở bạn.
Hầu hết mọi người thấy khó khăn trong việc nghĩ về thời gian về hệ thống đánh số Excel. Vì vậy, bạn có thể muốn sử dụng VBA TimeValue chức năng để đại diện cho thời gian. TimeValue chuyển đổi một chuỗi giống như một khoảng thời gian thành một giá trị mà Excel có thể xử lý. Câu lệnh sau cho thấy một cách dễ dàng hơn để lập chương trình một sự kiện cho 3 p. m.:
Ứng dụng. OnTime TimeValue ("3:00 pm"), "DisplayAlarm"
Nếu bạn muốn lên lịch một sự kiện liên quan đến thời gian hiện tại (ví dụ, 20 phút từ bây giờ), bạn có thể sử dụng một câu như sau: < Ứng dụng. Giờ đây bạn có thể sử dụng phương pháp OnTime để chạy một thủ tục VBA trong một ngày cụ thể. Bạn phải chắc chắn rằng máy tính của bạn tiếp tục chạy và rằng bảng tính với thủ tục được giữ mở. Câu lệnh sau chạy thủ tục DisplayAlarm ở 5 p. m. vào ngày 31 tháng 12 năm 2016:
Đơn. OnTime DateValue ("12/31/2016 5: 00"), "DisplayAlarm"
Dòng mã cụ thể này có thể hữu ích để cảnh báo bạn rằng bạn cần phải về nhà và chuẩn bị cho các lễ hội đêm giao thừa.
Đây là một ví dụ khác sử dụng sự kiện OnTime. Thực hiện các thủ tục UpdateClock ghi thời gian vào ô A1 và cũng lập trình một sự kiện khác sau năm giây.Sự kiện này chạy lại thủ tục UpdateClock. Hiệu quả ròng là tế bào A1 được cập nhật với thời gian hiện tại mỗi năm giây. Để ngăn chặn các sự kiện, thực hiện các thủ tục StopClock (mà hủy bỏ các sự kiện). Lưu ý rằng NextTick là một biến cấp độ mô đun lưu trữ thời gian cho sự kiện tiếp theo.
Dim NextTick As Date Sub UpdateClock () 'Cập nhật cell A1 với thời gian hiện tại ThisWorkbook. Tờ (1). Phạm vi ("A1") = Thời gian 'Thiết lập sự kiện kế tiếp 5 giây kể từ bây giờ NextTick = Bây giờ + TimeValue ("00: 00: 05") Ứng dụng. OnTime NextTick, "UpdateClock" End Sub Sub StopClock () 'Hủy bỏ các sự kiện OnTime (dừng đồng hồ) Ngày Lỗi Tiếp tục ứng dụng tiếp theo. OnTime NextTick, "UpdateClock", False End Sub
Các sự kiện OnTime vẫn tồn tại ngay cả sau khi bảng tính đã được đóng lại. Nói cách khác, nếu bạn đóng bảng tính mà không chạy thủ tục StopClock, bảng tính sẽ tự mở lại sau 5 giây (giả sử rằng Excel vẫn đang chạy). Để ngăn chặn điều này, sử dụng một Workbook_BeforeClose thủ tục sự kiện có chứa các câu sau đây:
Call StopClock
Phương pháp OnTime có hai đối số bổ sung. Nếu bạn định sử dụng phương pháp này, bạn nên tham khảo hệ thống Trợ giúp để biết chi tiết đầy đủ.
Nếu bạn muốn xem một ứng dụng khá phức tạp, hãy kiểm tra ứng dụng đồng hồ analog này. Mặt đồng hồ thực sự là biểu đồ, và biểu đồ được cập nhật mỗi giây để hiển thị thời gian trong ngày. Vô dụng, nhưng vui vẻ.
Một ứng dụng tương tự đồng hồ.
Sự kiện bấm phím
Trong khi làm việc, Excel liên tục theo dõi những gì bạn nhập. Bởi vì điều này, bạn có thể thiết lập mọi thứ lên để keystroke một hoặc kết hợp phím thực hiện một thủ tục.Dưới đây là một ví dụ gán các phím PgDn và PgUp:
Ứng dụng Sub Setup_OnKey (). OnKey "{PgDn}", "PgDn_Sub" Ứng dụng. OnKey "{PgUp}", "PgUp_Sub" End Sub Sub PgDn_Sub () Ngày Error Lặp lại ActiveCell tiếp theo. Offset (1, 0). Kích hoạt End Sub Sub PgUp_Sub () On Error Lặp lại ActiveCell tiếp theo. Offset (-1, 0). Kích hoạt End Sub
Sau khi thiết lập các sự kiện OnKey bằng cách thực hiện các thủ tục Setup_OnKey, nhấn PgDn di chuyển bạn xuống một hàng. Nhấn PgUp di chuyển bạn lên một hàng.
Lưu ý rằng các mã khóa được đóng trong dấu ngoặc đơn, không nằm trong dấu ngoặc đơn. Để biết danh sách mã bàn phím đầy đủ, hãy tham khảo hệ thống Trợ giúp. Tìm kiếm
OnKey.
Trong ví dụ này, Trên Lỗi Tiếp tục Tiếp theo được sử dụng để bỏ qua bất kỳ lỗi nào được tạo ra. Ví dụ, nếu ô hoạt động ở hàng đầu tiên, cố gắng di chuyển lên một hàng gây ra một lỗi mà có thể bỏ qua một cách an toàn. Và nếu một bảng biểu đang hoạt động, không có tế bào hoạt động. Bằng cách thực hiện các thói quen sau, bạn hủy bỏ các sự kiện OnKey:
Sub Cancel_OnKey () ứng dụng. Ứng dụng OnKey "{PgDn}". OnKey "{PgUp}" End Sub
Sử dụng một chuỗi rỗng như đối số thứ hai cho phương pháp OnKey
không
hủy bỏ sự kiện OnKey. Thay vào đó, nó làm cho Excel đơn giản bỏ qua các phím tắt. Ví dụ, câu lệnh sau nói với Excel để bỏ qua Alt + F4. Dấu phần trăm đại diện cho phím Alt: Ứng dụng.OnKey "% {F4}", "" Mặc dù bạn có thể sử dụng phương pháp OnKey để chỉ định phím tắt để thực hiện macro, bạn nên sử dụng hộp thoại Macro Options cho tác vụ này.
Nếu bạn đóng bảng tính chứa mã và để Excel mở, phương pháp OnKey sẽ không được đặt lại. Do đó, việc nhấn phím tắt sẽ làm cho Excel tự động mở tệp bằng macro. Để ngăn điều này xảy ra, bạn nên bao gồm mã trong mã sự kiện Workbook_BeforeClose của bạn để đặt lại sự kiện OnKey.