Excel精英培训网

 找回密码
 注册

QQ登录

只需一步,快速开始

你正在寻找更好的Excel学习教程吗?Excel技巧80集+数据透视表+函数初中高全套+VBA80集,想学的这儿全都有
查看: 182|回复: 0

动态创建的ComboBox控件如何获取Enter,Exit事件

[复制链接]
发表于 2019-1-11 22:57 | 显示全部楼层 |阅读模式
1学分
如题:
在窗体模块下
Public WithEvents ComBox As ComboBox

Private Sub UserForm_Initialize()
    For i = 0 To 3
        Set ComBox = Me.Controls.Add("Forms.ComboBox.1", "ComboBox" & i, True)
        With ComBox
            .Width = 44
            .Height = 16
            .Left = 5
            .Top = 2 + (i * 16)
        End With
    next
End Sub

动态组件事件

动态组件事件

(上图为动态组件定久的事件选项,其中没Enter,Exit事件!)
(注:如果使用静态组件,则会有Enter,Exit事件!)
当然,Enter和Exit事件是Control类的通用事件!
如果请Public WithEvents ComBox As ComboBox 改为 Public WithEvents ComBox As Control 类
以下在定义ComBox上就会出现错误弹窗“运行时错误'459',对象或类不支持事件集"
PS:后经仔细阅读WithEvents 申明的规范,只能是指定类,并不能是数组。
Control是一个广义类包括了很多控件类型并不是指定类,所以才出现错误弹窗。
为什么一定要动态组件要有Enter,Exit事件?
我需要的目的是,当一个动态控件获取焦点时(Enter事件),可以使用ActiveControl,来获取当前控件,然后用Exit事件再次获取ActiveControl,这样可以动态的ComBox就一直是当前的控件,从而后台代码就写一个COmBox的事件组,而不是生成100个动态控件,就要写100组的事件代码。



您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2019-3-26 04:07 , Processed in 0.046800 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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