Запуск макроса с выпадающим списком

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

Пример макроса:

Sub Macro1() ' ' Macro1 Macro ' ' Keyboard Shortcut: Option+Cmd+s ' Range("A1:AO125").Select Range("A2").Activate ActiveWorkbook.Worksheets("Test Model").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Test Model").Sort.SortFields.Add Key:=Range( _ "R2:R125"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("Test Model").Sort .SetRange Range("A1:AO125") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("C7").Select End Sub 

Я хотел бы запустить этот макрос с выпадающим списком. Я создал раскрывающийся список и написал некоторый синтаксис в редакторе VB в колонке книги excel.

Вот синтаксис:

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("J15")) Is Nothing Then Select Case Range("J15") Case "Engagement Rate % ": Macro1 End Select End If End Sub 

Когда я пытаюсь запустить код, ничего не происходит … Может ли кто-нибудь помочь мне с моим синтаксисом?

Я добавил снимок экрана ниже, чтобы помочь с объяснением.

Пример падения

Просто измените свой код в событии Worksheet_Change на код ниже.

Это вызовет Macro1 если значение в ячейке «J15» равно «Уровень взаимодействия%» (с пробелом в конце?! ).

 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = True ' <-- just for tests If Not Intersect(Target, Range("J15")) Is Nothing Then Select Case Target.Value Case "Engagement Rate % " Macro1 End Select End If End Sub 

И попробуйте этот код вместо вашего «Макро1» (посмотрите, появляется ли MsgBox ):

 Option Explicit Sub Macro1() ' Macro1 Macro ' Keyboard Shortcut: Option+Cmd+s MsgBox "Hello Test" 'Range("A1:AO125").Select 'Range("A2").Activate With Worksheets("Test Model") .Sort.SortFields.Clear .Sort.SortFields.Add Key:=Range("R2:R125"), SortOn:=xlSortOnValues, Order:=xlDescending, _ DataOption:=xlSortNormal With .Sort .SetRange Range("A1:AO125") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With '.Activate ' <-- not sure why it's needed '.Range("C7").Select ' <-- not sure why it's needed End With End Sub 
Interesting Posts

Копирование ячеек при добавлении строки в другую книгу

Выполните функцию VBA в столбце с неизвестным количеством строк

Microsoft Open XML Чтение файла Excel с использованием метода SAX по строке и поиск данных ячейки

excel vba UDF в цикле массива

Excel Возвращает значения из столбца A, если столбец B удовлетворяет запросу оператора Function

Вставка данных в ту же строку, что кнопка находится в

Использование POI, JAVA и MySQL для компиляции документа Excel

Формула Excel может начинаться с?

Экспортировать данные JSON в файл Excel с помощью angularjs и nodejs

Excel: переместите содержимое строки в определенный столбец на основе условия

Отображение смоделированных данных в диаграмме

Как сохранить файл excel в vb.net

Удалить строки, основанные на смежном значении ячейки – VBA

Vlookup возвращает # N / A, если строка содержит '

Каково максимальное значение смещений строк и столбцов в VBA для Excel 2010?

Давайте будем гением компьютера.