Giả sử tôi có một nút được nhúng vào bảng tính của tôi sẽ khởi chạy một số chức năng VBA.Làm thế nào để dừng mã VBA đang chạy?
Private Sub CommandButton1_Click()
SomeVBASub
End Sub
Private Sub SomeVBASub
DoStuff
DoAnotherStuff
AndFinallyDothis
End Sub
Tôi muốn có cơ hội để có một số loại nút "hủy" rằng sẽ ngừng SomeVBASub
thực hiện tại một thời điểm tùy ý, và tôi không thành liên quan đến Ctrl+Break
đây, vì tôi muốn thích làm âm thầm.
Tôi đoán đây là vấn đề khá phổ biến, có ý tưởng gì không?
Cảm ơn.
tôi có một ý tưởng để thực hiện loại này logic nhưng nó khá embarasses tôi để đặt 'DoEvents-Kiểm tra chuỗi flag' trong mọi điểm thoát của thủ tục có thể (theo nghĩa đen, sau gần như mỗi chuỗi). –
Phương pháp @Faheemitian mô tả dưới đây tránh điều đó, nhưng hoạt động khá giống với Ctrl + Break. Tùy thuộc vào mức độ kiểm soát bạn muốn trên giao diện người dùng (ví dụ:một nút) và nơi bạn có thể cho phép mã của bạn thoát. Nếu giao diện người dùng không quan trọng và việc thoát khỏi mã có thể tùy ý (ví dụ: không có vấn đề với phụ thuộc, khôi phục, v.v ... thì điều đó sẽ dễ nhất. Thông thường, việc thêm bẫy cho cờ hủy không quá nặng nề vì hầu hết thời gian thực hiện sẽ được sử dụng trong các vòng lặp, nhưng có lẽ đó không phải là trường hợp trong tình huống của bạn. –
Hãy để tôi cũng thêm rằng nếu bạn lo ngại về thủ tục không dừng ngay lập tức khi họ nhấp vào "hủy" (do đó bạn cần phải thêm quá nhiều lần kiểm tra), điều tôi thường làm là tắt nút Hủy và thay đổi văn bản thành "Đợi ..." hoặc một cái gì đó trong quy trình Nhấp, vì vậy người dùng biết rằng ứng dụng đang thực sự xem xét yêu cầu của họ. –