停止宏以允许编辑工作簿

时间:2018-12-04 07:19:25

标签: excel vba

我写了一个代码来打开工作簿,并按特定列中的数字过滤数据。我需要先过滤“ 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 :(得分:2)

我建议您不要在宏运行时尝试编辑工作簿-我什至认为这根本不可能。此外,请不要通过激活/选择范围来引用范围。

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打开宏对话框。选择宏,然后单击选项。在打开的窗口中,您可以为所选的宏分配键盘快捷键。

答案 1 :(得分:2)

  1. 将现有的宏分为两部分
    • 第一部分包含MsgBox"Task ok"行之前的所有内容
    • 第二部分包含该点之后 的所有内容
  2. 使用标签和一个“确定”按钮创建一个无模式(或“非模态”)用户表单,以调用拆分宏的第二部分
    • “无模式”表示您可以在用户窗体打开时编辑工作簿。 MsgBox是“模态”,这就是为什么您不能编辑任何内容的原因。更多详细信息available from Microsoft
  3. 用打开用户窗体的行替换拆分宏第一部分中的MsgBox"Task ok"行。

一旦第一个半宏完成,并且用户窗体正等待您单击“确定”,您将能够编辑工作簿。单击“确定”后,第二部分将开始。

可能最好首先考虑是否需要通过VBA,用户窗体或对话框(包括“选择范围”之类的对话框)来使用户需要进行的“编辑” “对话框或“颜色选择器”对话框)