EXCEL VBA 窗体显示期间不执行下面代码,也不影响操作工作表?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EXCEL VBA 窗体显示期间不执行下面代码,也不影响操作工作表?相关的知识,希望对你有一定的参考价值。

我想设置1个窗口,用于询问是否的。(代替MSGBOX)
弹出窗体后,我可能要修改工作表,然后再按窗体上的按钮。

而且在我没有操作窗体之前(关闭),不要执行下面的代码。

代码1
代码2
MSG.Show()'等待窗口关闭,期间不要影响操作工作表。
代码4
代码5

MSG.Show (1)
如果是1,就说明是模态窗口,必须要等窗口关闭才能执行下面的语句
如果是0,说明是非模态窗口,可以直接执行下面的语句。
但如果在模态下,是不可以操作工作表的。
如果想既要能操作工作表,又不想执行下面的语句。建议还是把窗口设置为非模态窗口,后面的语句删掉,在窗口关闭后触发后续的事件。
参考技术A 代码1
代码2
MSG.Show() 0

DoEvents
代码4
代码5追问

我要的是停在 MSG.Show(),等关闭后才继续

追答

那么,在你进行代码设计时,应该在窗体
msg的关闭事件中,写入代码4与代码5

追问

那我有时不一定需要msg,有时可能需要跳过直接执行

追答

我传个文件上来,你研究下吧。

窗体处理了之后,后继续运行的。


VBA调用宏的方式总结大全

文章目录


背景

很多小伙伴在拿到模型之后, 看着满屏的代码, 却不知道如何下手使用这些代码. 这篇文章就在于告诉你如何使用写好代码的Excel VBA模型


方式一 : Excel菜单执行宏

这种方式不需要写代码, 也不需要额外的绑定,操作步骤也很简单
开发工具>>>>选择宏名>>执行

  • 截图👇

  • Gif动图👇

TIps: 开发工具菜单默认是隐藏的, 找不到菜单的时候, 参照这篇文章 🫱 "开发工具"在哪里


方式二 : 按钮绑定宏

除了直接按名字执行宏, 大部分时候开发者会选择绑定宏到按钮上, 这种方式会更加友好

1. 插入按钮

插入按钮的方式有至少3种

  • 最古老而丑的方式是开发工具 >> 插入 >> 选择一个按钮
  • 普通方式是插入 >> 形状 >> 选择一个
  • 最新方式是插入 >> 图标 >> 选择一个 (需Office 365)

介绍一下普通方式

  • 截图👇

  • Gif动图👇

2. 绑定宏

一般来说,插入按钮后都会在按钮中编辑一下文字,提示使用者这是什么,例如,输入:一键汇总(双击按钮即可输入). 然后在按钮点击鼠标右键弹出菜单,选择需要绑定的宏

  • 截图👇

  • Gif动图👇

    效果其实是和方式一一样的, 只是把入口放出来了, 友好一些


方式三 : 窗体绑定宏

这一步需要写代码, 并需要设计他原本就很丑的窗体, 使用起来感觉像是90年代的软件(不明白为什么30年了, 它还不更新UI)
需要进入VBE操作, 并且需要写代码

1. 插入窗体

2. 拖入按钮


并调整细节

3. 绑定按钮点击事件触发宏(写代码)

  • 设计窗体触发事件
    一般会设计在工作簿打开的时候加载, 这个时候,需要在ThisWorkbook下设计事件, 代码如下
    Private Sub Workbook_Open()
        Load UserForm1
    End Sub
    
  • 绑定窗体按钮点击事件
    UserForm1里写代码如下
    Private Sub CommandButton1_Click()
        Call listAll
    End Sub
    
  • 设计窗体释放事件
    这里需要设计了, 正常来说, 点击运行按钮, 运行完即自动关闭窗体, 也就是在上面步骤中加入多一行代码unload UserForm1,如果你想写别的, 在这里写
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
        ' 这里写你的代码
    End Sub
    

最后的界面大概是长这样


方式四 : 事件绑定宏

这个方式就太多了, 但是原理来讲的话, 又都是和方式三一样的, 在事件中加入call listAll代码即可


- End -

以上是关于EXCEL VBA 窗体显示期间不执行下面代码,也不影响操作工作表?的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA入门用户窗体开发

VBA调用宏的方式总结大全

VBA调用宏的方式总结大全

excel vba 窗体中listbox用法

Excel Vba 如何将单元格的值,同步显示在窗体中的LABEL或TEXTBOX中?

vba 怎么实现在excel中搜索窗体textbox中的内容