Tôi có một số biến trang tính công khai được khởi tạo lần đầu tiên khi sổ làm việc đang mở. Tôi có một nút thực hiện điều này về cơ bản:Biến toàn cục VBA không còn được khai báo sau khi xóa trang tính
Dim Response As Variant
Response = MsgBox("Are you sure you want to delete this worksheet?", vbYesNo + vbExclamation, "Confirm Action")
If Response = vbNo Then
GoTo exit sub
End If
'Save workbook prior to deletion as a precaution
ThisWorkbook.Save
ActiveSheet.Delete
Vì lý do nào đó sau này, các biến bảng tính đó không còn được khai báo và tôi phải khởi động lại chúng mỗi lần. Tôi đã thử thêm cuộc gọi macro InitVariables của tôi sau khi .Delete và nó vẫn không hoạt động.
Bất kỳ lý do nào khiến điều này có thể xảy ra?
Tôi hiểu. Có cách nào tôi có thể chèn cuộc gọi InitVariables của tôi trong quá trình biên dịch lại sau đó? – KingKong
Không thực sự là một cách tốt để đánh chặn các cuộc gọi biên dịch, và chắc chắn không phải từ VBA. Những gì bạn có trong globals của bạn? Nếu bạn có thể tạo lại chúng với một cuộc gọi 'InitVariables', nó sẽ không đơn giản hơn để gọi nó trước khi mã của bạn chạy? – Comintern
Vâng, đó là khá nhiều những gì tôi đang làm. Tôi chỉ không muốn phải nhớ rằng mỗi khi tôi viết một phụ hoặc chức năng mới. – KingKong