Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 停止宏以允许编辑工作簿_Excel_Vba - Fatal编程技术网

Excel 停止宏以允许编辑工作簿

Excel 停止宏以允许编辑工作簿,excel,vba,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,然后编辑数据,然后在+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

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

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

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

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

将现有宏拆分为两部分 第一部分包含MsgBoxTask ok行之前的所有内容 第二部分包含该点之后的所有内容 使用标签和OK按钮创建无模式或非模式用户窗体,以调用拆分宏的第二部分 无模式意味着您可以在用户窗体打开时编辑工作簿。MsgBox是模态的,这就是为什么你不能编辑任何东西。更多细节 将拆分宏第一部分中的MSGBOXSTASK ok行替换为打开用户窗体的行。 前半个宏完成后,用户窗体等待您单击“确定”,您就可以编辑工作簿了。单击“确定”后,第二部分将开始

最好首先考虑一下,您需要通过VBA、用户表单或对话框(包括选择范围对话框或颜色选择器对话盒< /P>)来编辑用户所需的编辑。 将现有宏拆分为两部分 第一部分包含MsgBoxTask ok行之前的所有内容 第二部分包含该点之后的所有内容 使用标签和OK按钮创建无模式或非模式用户窗体,以调用拆分宏的第二部分 无模式意味着您可以在用户窗体打开时编辑工作簿。MsgBox是模态的,这就是为什么你不能编辑任何东西。更多细节 将拆分宏第一部分中的MSGBOXSTASK ok行替换为打开用户窗体的行。 前半个宏完成后,用户窗体等待您单击“确定”,您就可以编辑工作簿了。单击“确定”后,第二部分将开始


最好首先考虑一下,如果你需要用户通过VBA、一个用户表单或者一个对话框,包括选择范围对话框,或者颜色选择器对话框[P/P],可以把宏分成两个宏,那么用户就可以进行编辑。并在用户手动操作后运行第二个宏?您可以将宏分配给按钮或键盘快捷键,以方便用户使用。由于我是VBA新手,我对excel宏的了解不多。如何分配键盘快捷键以由用户手动启动宏?可能将宏拆分为两个宏?并在用户手动操作后运行第二个宏?您可以将宏指定给按钮或键盘快捷键,以方便用户使用。由于我是VBA新手,我对excel宏的了解不多。如何分配键盘快捷键以由用户手动启动宏?在宏运行时完全可以编辑工作簿-只需将行停止作为代码级断点,然后在完成调试时按F5或VBA中的“恢复”按钮即可。它往往是相当情境化的,例如,当您需要用户选择一系列单元格时,通常可以用UserForm或DialogBox替换。用户可以在Excel中执行的操作数量有限,但无法通过VBA执行,例如recolour picture和PictureFormat。Recolor方法在Excel中不可用,因为有些人正在为用户编写VBA程序,而这些用户对代码的访问权限绝对为零,让他们打开VBA窗口继续编写代码对我来说是一件非常困难的事情。我想是pos


可以,但这似乎远远超出了有利的解决方案。同意-这就是为什么在极少数情况下需要它的原因,我建议使用无模式用户表单方法。当项目受到保护时,停止和断点也不起作用,但可以完成,对于粗糙的快速原型/测试目的@Chronocidal和TIm Stack有很多东西需要向您学习。我非常感谢您分配宝贵的时间来解决我的问题。在我看来,分配键盘快捷键是暂停宏并允许编辑的更好方法。在宏运行时编辑工作簿是完全可能的正在运行-只需将行停止包含为代码级断点,然后在完成调试后单击F5或VBA中的“恢复”按钮即可。它往往是相当情境化的,例如,当您需要用户选择一系列单元格时,通常可以用UserForm或DialogBox替换。用户可以在Excel中执行的操作数量有限,但无法通过VBA执行,例如recolour picture和PictureFormat。Recolor方法在Excel中不可用,因为有些人正在为用户编写VBA程序,而这些用户对代码的访问权限绝对为零,让他们打开VBA窗口继续编写代码对我来说是一件非常困难的事情。我认为这是可能的,但这似乎远远超出了有利的解决方案。同意-这就是为什么在极少数情况下需要它的原因,我建议使用无模式用户表单方法。当项目受到保护时,停止和断点也不起作用,但可以完成,对于粗糙的快速原型/测试目的@Chronocidal和TIm Stack有很多东西需要向您学习。我非常感谢您分配宝贵的时间来解决我的问题。在我看来,分配键盘快捷键是暂停宏并允许编辑的更好方法。当我单击您从中共享的链接时微软显示NilushaMadumal C++语言。VBA是无模式选项吗?@是的。模态和无模式是一个相当通用的术语,可在C、VB、java、JavaScript、Python中使用。基本上是程序员的对话,这个窗口/弹出/代码停止你做任何其他事情直到它关闭/完成吗?当我点击你已经共享的链接从微软它显示我的C++语言。是无模式选项可用于VBA?@ NilushaMadumal是-模态和无模式是一个相当通用的术语,在C,VB,java中可用,JavaScript、Python等。这基本上是程序员的话题,因为这个窗口/弹出窗口/代码在关闭/完成之前会阻止您做任何其他事情吗?