Я работаю над Excel Macro для множественного выбора в выпадающем списке Excel.Наткнулся на следующий код для множественного выбора
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Oldvalue As String
Dim Newvalue As String
Application.EnableEvents = True
On Error GoTo Exitsub
If Target.Column = 7 And (Target.Row >= 1 And Target.Row <= 5000) Then
If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
GoTo Exitsub
Else: If Target.value = "" Then GoTo Exitsub Else
Application.EnableEvents = False
Newvalue = Target.value
Application.Undo
Oldvalue = Target.value
If Oldvalue = "" Then
Target.value = Newvalue
Else
If InStr(1, Oldvalue, Newvalue) = 0 Then
Target.value = Oldvalue & " # " & Newvaluae
Else:
Target.value = Oldvalue
End If
End If
End If
End If
Application.EnableEvents = True
Exitsub:
MsgBox "Error"
Application.EnableEvents = True
End Sub
Это более или менее стандартный код для множественного выбора, как я узнал из Интернета.Но здесь я столкнулся с некоторой проблемой.
Когда я изменяю значение в раскрывающемся списке, следующая строка вызывает некоторые проблемы:
Application.Undo
и отправляет элемент управления на ExitSub
который я проверил, разместив там MsgBox.
Может кто-нибудь указать, почему этот код не работает?Я использую MS Excel 2016, если это поможет
Редактировать:
Я заметил ошибку в коде и исправил ее, что, по моему мнению, и стало причиной поведения.Он работал один или два раза после изменения, но, опять же, возникает та же проблема.Я изменил следующую строку:
Target.value = Oldvalue & " # " & Newvaluae
на эту
Target.value = Oldvalue & " # " & Newvalue
Я действительно не понимаю причину такого поведения кода.Будет здорово, если кто-нибудь сможет пролить немного света.