在VBA中,动态添加用户表单textbox控件的click事件不触发,但change事件可以工作的原因可能是因为click事件需要在控件被激活(即获得焦点)后才能触发,而动态添加的控件可能没有正确地获得焦点。为了解决这个问题,可以尝试以下方法:
Private Sub AddTextBox_Click()
Dim newTextBox As Object
Set newTextBox = Me.Controls.Add("Forms.TextBox.1")
newTextBox.Name = "DynamicTextBox"
newTextBox.Left = 100
newTextBox.Top = 100
newTextBox.Width = 100
newTextBox.Height = 20
newTextBox.Activate ' 手动激活控件
End Sub
Private Sub DynamicTextBox_Click()
MsgBox "Click event triggered!"
End Sub
Private Sub AddTextBox_Click()
Dim newTextBox As Object
Set newTextBox = Me.Controls.Add("Forms.TextBox.1")
newTextBox.Name = "DynamicTextBox"
newTextBox.Left = 100
newTextBox.Top = 100
newTextBox.Width = 100
newTextBox.Height = 20
AddHandler newTextBox.MouseDown, AddressOf DynamicTextBox_Click ' 添加MouseDown事件处理程序
End Sub
Private Sub DynamicTextBox_Click()
MsgBox "Click event triggered!"
End Sub
以上是解决动态添加用户表单textbox控件click事件不触发的两种方法。根据具体情况选择适合的方法即可。
关于VBA和用户表单控件的更多信息,您可以参考腾讯云的VBA开发文档和用户表单控件文档:
请注意,以上链接为腾讯云相关产品和文档,仅供参考。
领取专属 10元无门槛券
手把手带您无忧上云