Остановить макрос, чтобы разрешить редактирование книги - PullRequest
0 голосов
/ 04 декабря 2018

Я написал код для открытия рабочей книги и фильтрации данных по номеру в определенном столбце.Мне нужно сначала отфильтровать «0», а затем отредактировать данные и затем отфильтровать между «+8» и «-8».

Я добавил окно сообщения, чтобы приостановить макрос, но я не могу редактироватьоткрытая книга, пока отображается окно сообщения.Я попытался с опцией «Application.waiting».

Мне нужно автоматически приостановить макрос и запустить его вручную.

Sub Filter_data()

Workbooks.open"D:\Reposrts\AAA.csv"
Activesheet.Range("I1:I100").Autofilter field:=1,Criterial:="0"
Activesheet.columns("A:Z").Autofit
MsgBox"Task ok"       'Here I need to pause the macro and allow for edit opened wb and then manually start macro for below line'
Activesheet.Range("I1:I100").Autofilter field:=1,Criterial:=">8", Opersator:=xlAnd, Criterial:="<-8"

End Sub

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018
  1. Разделите существующий макрос на две части
    • Первая часть содержит все до строки MsgBox"Task ok"
    • Вторая часть содержит все после эта точка
  2. Создайте немодальную (или «немодальную») форму пользователя с вашим ярлыком и кнопкой «ОК» для вызова второй части вашего разделенияmacro
    • «Немодальный» означает, что вы можете редактировать книгу, пока открыта форма пользователя.MsgBox - это "Модал", поэтому вы не можете ничего редактировать.Подробнее доступно в Microsoft
  3. Замените строку MsgBox"Task ok" в первой части вашего макроса разделения строкой, открывающей вашу пользовательскую форму.

Как только первый полумакрос закончится, и пользовательская форма будет ждать, пока вы нажмете «ОК», вы сможете редактировать рабочие книги.Как только вы нажмете «ОК», начнется вторая часть.

, вероятно, . Лучше всего сначала подумать, возможны ли "правки", которые необходимо сделать пользователю, через VBA, пользователя.Форма или диалоговое окно DialogBox (например, DialogBox «Выбор диапазона» или диалоговое окно «Выбор цвета»)

0 голосов
/ 04 декабря 2018

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

Activesheet.Range("I1:I100").Autofilter 'Instead of this use the code below

With Workbooks("AAA.csv")
.Sheets("NAME").Range("I1:I100).Autofilter
'More code
End With

Как упоминалось в Chillin, вы можете назначить горячие клавиши для вашего фильтра, разделив их на две части.Кроме этого, вы можете использовать кнопки для активации макросов.

Чтобы назначить сочетание клавиш для макроса: нажмите ALT + F8, чтобы открыть диалоговое окно макроса.Выберите макрос и нажмите «Параметры».В открывшемся окне вы можете назначить сочетание клавиш для выбранного макроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...