VBA - Отменить изменение ComboBox - PullRequest
0 голосов
/ 27 июня 2018

Я не могу заставить этот код работать ... Я пытаюсь сказать, что если поле со списком меняется и диапазон не пустой, спросите, действительно ли пользователь хочет очистить диапазон и внести изменения. Если они скажут «нет», отмените комбинированный список и верните его в прежнее состояние. Мои параметры для Sub не отображают BeforeUpdate, только Change и некоторые другие.

Я пытался предварительно захватить значение и установить его обратно, но оно не работает.

Любые идеи приветствуются !!

Sub ComboBox_UPC_C18_Change()

    Dim ComboBox_UPC_C18_Value As String

    Dim Location As Range
    Set Location = Range("Location_C18")

        If Application.WorksheetFunction.CountA(Location) = 0 Then

            Exit Sub

        ElseIf MsgBox("Are you sure you want change the UPC (clearing the row's data)?", vbYesNo, "User Confirmation") = vbYes Then

            Location.Value = ""

        ElseIf MsgBox("Are you sure you want change the UPC (clearing the row's data)?", vbYesNo, "User Confirmation") = vbNo Then

            ComboBox_UPC_C18.Value = ComboBox_UPC_C18_Value
            MsgBox (ComboBox_UPC_C18_Value)

            Exit Sub

        End If

    ComboBox_UPC_C18_Value = ComboBox_UPC_C18.Value
    MsgBox (ComboBox_UPC_C18_Value)

End Sub

1 Ответ

0 голосов
/ 27 июня 2018

Я не смог проверить это, но я думаю, что это близко к тому, что вы ищете. Дайте мне знать, если я совершенно не на месте:

Private Sub ComboBox_UPC_C18_Change()
    Dim RngLocation     As Range
    Dim PrevLocation    As String

    Application.EnableEvents = False

    PrevLocation = Range("Location_C18").Value

    If PrevLocation = "" Then
        Range("Location_C18").Value = ComboBox_UPC_C18.Value
    Else
        If MsgBox("Are you sure you want to change this?", vbYesNo) = vbYes Then
            Range("Location_C18").Value = ComboBox_UPC_C18.Value
        Else
            ComboBox_UPC_C18.Value = PrevLocation
        End If
    End If

    Application.EnableEvents = True
End Sub
...