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组的事件代码。