Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3507|回复: 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组的事件代码。



excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-20 06:45 , Processed in 0.266901 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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