سؤال

ولدي طلب مكتوب في VBA لبرنامج Excel التي تأخذ في تغذية بيانات حية. كلما كان هناك تغيير في البيانات، يتم تشغيل الأحداث المختلفة داخل VBA.

ولدي أيضا بعض UserForms مع كومبوبوكسيس عليها. مشكلتي هي أنني عندما انقر على السهم لأسفل على تحرير وسرد ومحاولة لجعل الاختيار، لحظة أحصل على التحديث من خلاصة البيانات، ويعيد تحرير وسرد. ما أود القيام به هو إيقاف الأحداث بينما أنا على صنع اختياري في تحرير وسرد ثم استئنافه عندما انتهيت. كيف تولد هذه الوظيفة؟

هل كانت مفيدة؟

المحلول

وربما يمكنك وضع العلم لتجاوز حالة التحديث على منسدل الخاص بك حتى يتم إجراء الاختيار.

Private bLock as boolean  ' declare at module level

' When a user clicks on the combobox
Private Sub DropDownArrow_Click()  ' or cboComboBox_Click()
    bLocked = True
End Sub

' This procedure is the one that does the updating from the data source.
' If the flag is set, do not touch the comboboxes.
Private Sub subUpdateComboBoxes()
    If Not bLocked then
        ' Update the comboboxes
    End If
End Sub


' When the selection is made, or the focus changes from the combobox.
' check if a selection is made and reset the flag.
Private Sub cboComboBox_AfterUpdate()  ' Or LostFucus or something else
    if Format(cboComboBox.Value) <> vbNullString Then
        bLocked = False
    End If
End Sub

وعلى أمل أن يساعد.

نصائح أخرى

وهذه محاولة لإيقاف:

<اقتباس فقرة>   

وapplication.enableevents = كاذبة

وهذا بدوره يعود على:

<اقتباس فقرة>   

وapplication.enableevents = صحيح

لوقفة وتظهر رسالة والاستمرار في العمل على شيء خلال وقفة. أخيرا اضغط على زر

Public Ready As Boolean

Private Sub Command1_Click()
Ready = True
End Sub

Private Sub Form_Load()
Me.Show
Ready = False
Call Wait
Label1.Visible = True
End Sub

Public Function Wait()
Do While Ready = False
    DoEvents
Loop
End Function
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top