excel VBA窗体按钮控件设置enter事件后,为啥会在启动窗体时,自动enter一次?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了excel VBA窗体按钮控件设置enter事件后,为啥会在启动窗体时,自动enter一次?相关的知识,希望对你有一定的参考价值。
这种错误一般偶尔发生,但是一旦在刚打开的工作簿中运行一次,就会出现
参考技术A 查下你那个控件有enter事件的tabindex属性是否为0,如果是的话,找一个没有enter事件的改为0。 参考技术B enter是啥事件?貌似窗体没有这个事件。追问是按钮控件的enter 事件
追答enter事件在按钮上,表示焦点的获取,即焦点回到按钮
启动窗体的时候,如果焦点正好在这个按钮上,就会响应enter事件
那怎样可以把焦点移开?我发现要是有这个enter事件,窗体的activate事件都会被屏蔽
而且按钮的default是false,我又没有按下enter
能力有限,不知道。
一般获取焦点是SetFocus方法,但是初始化窗体的时候,貌似这个方法无效。
到现在都不知道你要enter事件做什么?或许可以从其它方面来实现
我是看中了enter的好,因为如果用click,我要按两次回车,待会进入enter时间。
追答如果你只是为了响应回车键的话,用按键响应事件就可以,做什么饶这么大圈子。
把按钮中的代码写一个sub里面
按钮的单击事件和文本框的按回车都去调用这个sub就可以
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窗体按钮控件设置enter事件后,为啥会在启动窗体时,自动enter一次?的主要内容,如果未能解决你的问题,请参考以下文章
EXCEL VBA 窗体设计,如何实现查询前一条记录和后一条记录的功能。