ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: opiona

[求助] 类模块中TextBox 没有Exit事件 怎么弄

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-10-3 12:30 | 显示全部楼层
最近做动态窗体也遇到类似的问题了,翻出来温习一下,感谢帖主分享

TA的精华主题

TA的得分主题

发表于 2023-10-3 15:42 | 显示全部楼层
没必要写那么多,GetForegroundWindow 函数了解一下

TA的精华主题

TA的得分主题

发表于 2023-10-3 16:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
caiyu93 发表于 2023-10-3 15:42
没必要写那么多,GetForegroundWindow 函数了解一下

获取句柄??

能获取激活的控件?

TA的精华主题

TA的得分主题

发表于 2023-10-3 16:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
micch 发表于 2023-10-3 16:23
获取句柄??

能获取激活的控件?

突然忘记了,vba那蛋疼的控件没句柄.

倒是有一个方法可以解决在类里面使用exit事件

在常规sheet类里的textbox_exit事件里面给指定类传递一个exit 事件即可

TA的精华主题

TA的得分主题

发表于 2023-10-3 19:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
caiyu93 发表于 2023-10-3 16:36
突然忘记了,vba那蛋疼的控件没句柄.

倒是有一个方法可以解决在类里面使用exit事件

使用场景:

在一个窗体里,用代码动态生成多个控件,给其中某个控件设置enter事件。

本身就用到两个类,一个是窗体,一个是自定义的类,如果再用到sheet类,就越来越复杂了

暂时就用mouse up事件代替吧

TA的精华主题

TA的得分主题

发表于 2023-10-4 18:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 caiyu93 于 2023-10-4 20:28 编辑
micch 发表于 2023-10-3 19:28
使用场景:

在一个窗体里,用代码动态生成多个控件,给其中某个控件设置enter事件。

离开事件模拟.rar (15.09 KB, 下载次数: 5)
o.png

TA的精华主题

TA的得分主题

发表于 2023-10-4 19:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
micch 发表于 2023-10-3 19:28
使用场景:

在一个窗体里,用代码动态生成多个控件,给其中某个控件设置enter事件。

也没什么难度,在其他控件单击事件也是一个解决之法不过比较麻烦

TA的精华主题

TA的得分主题

发表于 2023-10-4 20:17 | 显示全部楼层
micch 发表于 2023-10-3 19:28
使用场景:

在一个窗体里,用代码动态生成多个控件,给其中某个控件设置enter事件。

完美解决,离开事件的问题

TA的精华主题

TA的得分主题

发表于 2023-10-4 21:36 | 显示全部楼层
caiyu93 发表于 2023-10-4 19:22
也没什么难度,在其他控件单击事件也是一个解决之法不过比较麻烦

目前我在半人工添加控件,半动态添加控件的情况下进行测试,回头下一步尝试纯动态生成全部控件,并且不同控件添加不同的事件,目的是练习做一个通用的窗体。


我设想的使用场景再详细描述一下:::
窗体里有一个控件multipage,具体有多少页和工作表数量对应一致,然后每一页有多少个控件,和对应工作表的标题字段数量对应一致。

因为文件是不固定的,所以page数量随文件的工作表数量动态添加,每一页里根据工作表字段数量,标签label动态添加,标签对应的组合框或者文本框也是动态添加的。
所以总共有多少个combobox还是textbox是不固定的,肯定没法一个控件一个控件单独声明事件(如果在窗体里声明一大堆withevents控件名称,那都不需要类模块了)

用类来实现各个标签的事件。比如,label和标题字段对应,假设标题字段是包含日期的字段,则在label对应的textbox在enter事件中,自动激活日历窗体,实现选择输入日期。
还是那个问题(因为工作表数量不固定,标题数量不固定,有多少个包含日期的字段是未知的),所以动态添加的控件(有的是combobox,有的是textbox)对应哪个控件是不固定的,而这些个日期对应的控件,需要enter事件调用打开日历窗体。

(Plus:除了举例的日期控件,还会有固定列表控件,用了combobox可以在enter的时候自动获取list信息,另外也会给一部分的label添加click事件,还有通用的button也需要添加事件。想的有点多做到现在有点后悔了,完全动态生成窗体内的所有控件,有点刻意给自己增加难度了,想放弃完全通用了)



image.jpg

TA的精华主题

TA的得分主题

发表于 2023-10-4 21:44 | 显示全部楼层
micch 发表于 2023-10-4 21:36
目前我在半人工添加控件,半动态添加控件的情况下进行测试,回头下一步尝试纯动态生成全部控件,并且不同 ...

https://club.excelhome.net/forum ... 47&pid=11343382

在这个帖子的基础上想到的。
可以做一个通用的窗体,对应不同文件也照样可以使用窗体进行数据的增改删查。
甚至还可以考虑窗体都用代码生成,并且生成的窗体里面各个控件都自带需要的事件。(目前来说,窗体都动态生成并且控件带事件还没进行实测,只是在人工插入窗体的基础上,进行全代码生成控件测试)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-29 12:31 , Processed in 0.033999 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表