Tôi đã tự dạy mình Excel VBA trong hai năm qua và tôi có ý tưởng rằng đôi khi nó thích hợp để vứt bỏ các biến ở cuối đoạn mã. Ví dụ, tôi đã nhìn thấy nó thực hiện trong bit này chuyển thể từ Ron de Bruin's code for transferring Excel to HTML:Khi nào một biến Excel VBA bị giết hoặc được đặt thành Không có gì?
Function SaveContentToHTML (Rng as Range)
Dim FileForHTMLStorage As Object
Dim TextStreamOfHTML As Object
Dim TemporaryFileLocation As String
Dim TemporaryWorkbook As Workbook
...
TemporaryWorkbook.Close savechanges:=False
Kill TemporaryFileLocation
Set TextStreamOfHTML = Nothing
Set FileForHTMLStorage = Nothing
Set TemporaryWorkbook = Nothing
End Function
tôi đã thực hiện một số tìm kiếm về vấn đề này và tìm thấy rất ít ngoài làm thế nào để làm điều đó, và trong một bài diễn đàn a statement that no local variables need to be cleared, kể từ khi họ ngừng tồn tại tại End Sub
. Tôi đoán, dựa trên mã ở trên, điều đó có thể không đúng tại End Function
hoặc trong các trường hợp khác mà tôi chưa gặp phải.
Vì vậy, câu hỏi của tôi nắm này:
- Có nơi nào đó trên web mà giải thích khi nào và tại sao cho dọn dẹp biến, và tôi chỉ không tìm thấy nó?
Và nếu không có thể ai đó ở đây xin giải thích ...
- Khi là biến dọn dẹp cho Excel VBA cần thiết và khi nó không phải là?
- Và cụ thể hơn ... Có sử dụng biến cụ thể (biến công cộng? Biến được xác định chức năng không?) Vẫn được tải trong bộ nhớ lâu hơn so với số người đăng ký và có thể gây rắc rối nếu tôi không xóa lên sau bản thân tôi?
Cảm ơn GSerg, giải thích này rõ ràng và súc tích và mang lại cho tôi ý thức tốt hơn cho quản lý biến. Một câu hỏi bổ sung: bạn nói "cấp truy cập của biến không ảnh hưởng đến tuổi thọ của nó". Bạn có biết nếu tuổi thọ đó bị giới hạn bởi khi một giá trị được đặt đầu tiên bởi mã đang hoạt động (bắt đầu) và khi mã mã đạt đến thẻ 'End' (kết thúc)? Hay nó kết thúc khi dự án reset? Tôi đã thử nghiệm lý thuyết này bằng cách đặt giá trị của một biến công khai bị mờ trong một mô-đun khác, nhưng biến không bao giờ xuất hiện trong cửa sổ cục bộ, vì vậy tôi không thể quan sát khi nó giảm xuống. –
@KarlRookey Công khai và riêng tư khác với cấp độ lớp so với cấp thủ tục. Công cộng vs tư nhân không ảnh hưởng đến thời gian cuộc sống. Cấp độ lớp nghĩa là cuộc sống biến đổi miễn là lớp học sống. Cấp độ mô-đun có nghĩa là cuộc sống biến miễn là dự án không được đặt lại. Lưu ý rằng "cuộc sống" và "chứa một cái gì đó" không phải là synonims. Biến có thể sống và chứa 'Nothing'. – GSerg