在Userform上的Excel VBA文本框单击事件

时间:2014-03-12 11:46:40

标签: excel vba textbox user-input

在EXCEL Userform上,我有几个Textbox。它们的数量可以随着动态创建而变化。

我想实现以下目标: 当用户点击任何文本框时,我想显示一个消息框,但只显示此特定用户窗体,而第一次点击只显示一次。

你能给我一个文档指针,帮助我实现这个目标吗?

点击谷歌搜索后,我的代码如下:

Userform:创建可变数量的文本框

Option Explicit

Dim oKlasseExcel() As Klasse1

Sub userform_initialize()

    Dim i As Long
    Dim k As Long

    k = InputBox("insert number")
    i = 0

    Do
        ReDim oKlasseExcel(0 To i)
        Set oKlasseExcel(i) = New Klasse1
        Set oKlasseExcel(i).objTextbox = Userform1.Controls.Add("Forms.Textbox.1", "Textbox" & CStr(i))

        With oKlasseExcel(i).objTextbox
            .Left = 30
            .Top = 75 + 25 * i
            .Width = 300
            .Height = 25
            .MultiLine = True
        End With

        i = i + 1

    Loop Until i = k

End Sub

课程模块:

Option Explicit

Public WithEvents objTextbox As MSForms.TextBox

Sub objTextbox_click()
    MsgBox objTextbox.Name & ": Changeereignis ausgelöst!"
End Sub

我想我可能要创建一个类模块,但我对此完全是新手,我想我需要一个写得很好的例子,并附上一些解释性的评论。当我点击文本框时,上面的代码没有任何作用。

1 个答案:

答案 0 :(得分:0)

如果您不想创建任何其他数据结构来捕获点击次数,也许您可​​以尝试更改一些TextBox属性,例如: 使用WordWrap = False创建一个TextBox,在单击它之后将其值更改为True - 然后您可以区分单击的是什么。