2016-04-08 21 views

Trả lời

19

Đâ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: EndEnd 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ệnh Stop để 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 SubExit 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ó.

enter image description here

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.

Các vấn đề liên quan