我写了一个代码来打开工作簿,并按特定列中的数字过滤数据。我需要先过滤“ 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
答案 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)
MsgBox"Task ok"
行之前的所有内容MsgBox
是“模态”,这就是为什么您不能编辑任何内容的原因。更多详细信息available from Microsoft MsgBox"Task ok"
行。一旦第一个半宏完成,并且用户窗体正等待您单击“确定”,您将能够编辑工作簿。单击“确定”后,第二部分将开始。
可能最好首先考虑是否需要通过VBA,用户窗体或对话框(包括“选择范围”之类的对话框)来使用户需要进行的“编辑” “对话框或“颜色选择器”对话框)