Trong VBA, đôi khi chúng tôi muốn thoát khỏi chương trình sau khi một số điều kiện là đúng. Nhưng tôi có sử dụng end
hoặc exit sub
không?Sự khác biệt giữa "kết thúc" và "thoát phụ" trong VBA là gì?
Trả lời
Đây là một chút nằm ngoài phạm vi câu hỏi của bạn, nhưng để tránh bất kỳ sự nhầm lẫn tiềm ẩn nào đối với người đọc mới sử dụng VBA: End
và End Sub
không giống nhau. Họ không thực hiện nhiệm vụ tương tự.
End
đặt điểm dừng cho TẤT CẢ thực thi mã và bạn hầu như luôn sử dụng Exit Sub
(hoặc Exit Function
tương ứng).
Ngắt kết thúc TẤT CẢ giải pháp. Trong khi điều này nghe có vẻ hấp dẫn để làm điều đó cũng xóa tất cả các biến toàn cầu và tĩnh. (source)
Xem thêm các DOX MSDN cho End Statement
Khi thực hiện, báo cáo kết quả
End
reset allmodule cấp biến và tất cả các biến địa phương tĩnh trong allmodules. Để duy trì giá trị của các biến này, hãy sử dụng câu lệnhStop
để thay thế. Sau đó bạn có thể tiếp tục thực hiện trong khi vẫn giữ giá trị của các biến đó.Lưu ý Tuyên bố
End
ngừng thực thi mã đột ngột, mà không cần gọi sự kiện Unload, QueryUnload hoặc Terminate hoặc bất kỳ mã Visual Basic nào khác. Mã bạn đã đặt trong các biến thể của Unload, QueryUnload và Terminate offorms vàclass modules không được thực thi. Các đối tượng được tạo ra từ các mô-đun lớp bị hủy, các tệp được mở bằng cách sử dụng câu lệnh Mở được đóng và bộ nhớ được chương trình của bạn sử dụng được giải phóng. Các tham chiếu đối tượng do các chương trình khác nắm giữ bị vô hiệu.
Cũng không phải là End Sub
và Exit Sub
tương tự. End Sub
không thể được gọi theo cùng một cách Exit Sub
có thể được, bởi vì trình biên dịch không cho phép nó.
này một lần nữa có nghĩa là bạn phải Exit Sub
, mà là một perfectly legal operation:
Exit Sub
Ngay lập tức thoát ra các thủ tục Sub trong đó nó xuất hiện. Thực hiện tiếp tục với tuyên bố sau tuyên bố rằng được gọi là thủ tục Sub. Thoát Sub chỉ có thể được sử dụng trong một quy trình Sub .
Ngoài ra, và một khi bạn có cảm giác về cách thức hoạt động của quy trình, rõ ràng, End Sub
không xóa bất kỳ biến toàn cầu nào.Nhưng nó clear local (Dim'd) variables:
End Sub
Kết thúc định nghĩa của thủ tục này.
- 1. Sự khác biệt giữa nghỉ và thoát là gì?
- 2. Sự khác biệt giữa nút quay lại và kết thúc là gì?
- 3. sự khác biệt giữa/* ... */và là gì/** ... */
- 4. Sự khác biệt giữa exit() và abort() là gì?
- 5. Sự khác nhau giữa các sự kiện kết thúc và kết thúc trong luồng Node
- 6. Sự khác biệt giữa mờ và được đặt trong vba
- 7. Sự khác biệt giữa Thisworkbook.name và Activeworkbook.name trong VBA
- 8. Sự khác biệt giữa '&' và ',' trong Generics Java là gì?
- 9. Sự khác biệt giữa DateValue và CDate trong VBA
- 10. Sự khác biệt giữa: = và = trong Excel VBA
- 11. Sự khác biệt giữa tiêm phụ thuộc và phụ thuộc là gì?
- 12. Trong Ember.js, sự khác biệt giữa [] và Ember.A ([]) là gì?
- 13. Sự khác biệt giữa & và && trong MATLAB là gì?
- 14. Sự khác biệt giữa INTERSECT và WHERE IN là gì?
- 15. Sự khác biệt giữa .closest() và .parents ('selector') là gì?
- 16. Sự khác biệt giữa mixin và thừa kế là gì?
- 17. Sự khác biệt giữa tổng hợp, thành phần và sự phụ thuộc là gì?
- 18. Sự khác biệt giữa "+ -" và "\ -" trong đầu ra cây phụ thuộc maven là gì?
- 19. Sự khác biệt giữa phụ huynh và cơ sở trong Perl 5 là gì?
- 20. Sự khác biệt giữa instanceof và Class.isAssignableFrom (...) là gì?
- 21. Sự khác biệt giữa Event.target, Event.toElement và Event.srcElement là gì?
- 22. sự khác biệt giữa những gì là [[], []] và [[]] * 2
- 23. Sự khác biệt giữa "như?", "As!" Và "as" là gì?
- 24. sự khác biệt giữa callback là gì và hứa
- 25. Sự khác biệt giữa engine.io và socket.io là gì?
- 26. Sự khác biệt giữa dispatch_get_global_queue và dispatch_queue_create là gì?
- 27. Sự khác biệt giữa -anydpi và -nodpi là gì?
- 28. Sự khác biệt giữa "Thread.currentThread(). GetName" và "this.getName" là gì?
- 29. Cách tìm sự khác biệt giữa các ngày trong VBA
- 30. VBA: Sự khác nhau giữa & và +
xem câu trả lời của tôi bên dưới. –