لماذا تفقد المتغيرات العامة لـ VBA القيم عند إغلاق UserForm؟
سؤال
لدي رمز ماكرو خلف ورقة العمل.عند النقر على الزر في الورقة، تتم تهيئة نموذج مستخدم جديد ويظهر للمستخدم.إذا أغلق المستخدم النوافذ بعلامة X حمراء، أو تم إغلاق النموذج باستخدام وظيفة/أسلوب "إخفاء"، فستفقد جميع المتغيرات العامة الموجودة خلف ورقة العمل قيمها.هل من الممكن الحفاظ على هذه القيم؟
رمز ورقة العمل خلف:
Private MeasurementCollection As Collection
Dim CurrentMeasurement As measurement
Dim NewMeasurement As measurement
Private Sub Worksheet_Activate()
Initialize
End Sub
Public Sub Initialize()
Set NewMeasurement = New measurement
Dim DropDownDataQueries As Collection
Set DropDownDataQueries = DBQueries.GetAllUpdateQueries
For i = 1 To DropDownDataQueries.Count
Dim Values As Collection
Set Values = DataBase.GetData(DropDownDataQueries(i))
With Me.OLEObjects("Combo" & i).Object
For Each value In Values
.AddItem value
Next value
End With
Next i
End Sub
Private Sub UpdateDB_Click()
UpdateGeneralData
If (CurrentMeasurement Is Nothing) Then
MsgBox ("Message text")
Else
Dim form As UpdateComentForm
Set form = New UpdateComentForm
form.Show
End If
End Sub
Private Sub Combo1_Change()
If Application.EnableEvents = True Then
If (Combo1.value <> "") Then
NewMeasurement.DN = Combo1.value
Else
NewMeasurement.DN = 0
End If
End If
End Sub
كود نموذج المستخدم
Private Sub UpdateDBData_Click()
If (Komentar.value <> "") Then
Me.Hide
Else
MsgBox ("Prosimo napišite vzrok za spremembe podatkov v belo polje!")
End If
End Sub
Private Sub UserForm_Terminate()
Me.Hide
End Sub
المحلول
تظهر التجارب أنه يتم مسح المتغيرات على مستوى الوحدة عند الخروج من إجراء يتضمن الاتصال = New Form
, ، بشرط أن تكون نافذة مصمم النموذج مفتوحة في مكان ما في IDE.
أغلق جميع نوافذ مصمم نماذج المستخدم التي قد تكون مفتوحة في VBA IDE ثم حاول مرة أخرى.
نصائح أخرى
تم الإعلان عن NewMeasurement ولكن لم يتم تعيينه مطلقًا.
يمكنك أن تفعل شيئا مثل Dim NewMeasurement As New measurement
لإنشاء مثيل للكائن.
لا تنتمي إلى StackOverflow