RE:获取对象的名称焦点和动态创建按钮的标题



我已经编写了用于动态创建文本框和按钮的VBA代码。以下是我在用户表单上点击"添加"按钮时的代码。

    Dim oTxtBox As Control
Dim oBrwsBtn As Control
Dim oCaption As Control
Dim oTxtLen As Integer
oTxtLen1 = TextBox1.Width
oTxtBrth1 = TextBox1.Height
oTxtPos1 = TextBox1.Left
oButLen = CommandButton1.Width
oButBrth = CommandButton1.Height
oTxtLen2 = TextBox2.Width
oTxtBrth2 = TextBox2.Height
If i = Empty Then
    i = 1
End If
    Set oTxtBox = Me.Controls.Add("Forms.TextBox.1")
    Set oBrwsBtn = Me.Controls.Add("Forms.CommandButton.1")
    Set oCaption = Me.Controls.Add("Forms.TextBox.1")
    With oTxtBox
        .Left = oTxtPos1
        .Top = oTxtBrth1 + 18 + (oTxtBrth + 18) * (i - 1)
        .Width = oTxtLen1
        .Height = oTxtBrth1
    End With
    With oBrwsBtn
        .Left = oTxtPos1 + oTxtLen1 + 18
        .Top = oTxtBrth1 + 18 + (oTxtBrth + 18) * (i - 1)
        .Width = oButLen
        .Height = oButBrth
    End With

    With oCaption
        .Left = oTxtPos1 + oTxtLen1 + 18 + oButLen + 18
        .Top = oTxtBrth1 + 18 + (oTxtBrth + 18) * (i - 1)
        .Width = oTxtLen2
        .Height = oTxtBrth2
    End With
    i = i + 1

Q1 现在如何编辑我动态创建的浏览按钮的标题 没有方法.Caption oBrWsBtn

Q2:焦点改变时如何获取值例如,当我单击"文本框1"对象时。变量应该为自己赋名(即 var(str) = 焦点对象名)

提前致谢

问题 1:为什么不尝试更具体地定义控件类型,看看是否允许您使用 .Caption方法。不明白为什么它现在不起作用,但也许 Control 对象类型没有 .Caption 方法,因为并非所有控件都有标题。

尝试:

'at the top of the sub:
Dim oBrwsBtn as CommandButton
'then later
Set oBrwsBtn = Me.Controls.Add("Forms.CommandButton.1")

要考虑的另一种选择是创建这些按钮,并在需要时使它们不可见。但这假设您实际上没有充分的理由动态创建它们,而您可能有。

Q2:使用control_AfterUpdate子:

'Dim this wherever appropriate for scope. Could be in the afterupdate sub if that works.
dim TextBox1_Value as string 
Private Sub TextBox1_AfterUpdate()
     TextBox1_Value = TextBox1.value
End Sub

最新更新