2013-02-11 52 views
0

我创建了一个表单,在该表单中我动态创建了文本框和相应的组合框以及组合框更改事件。这里是类创建组合框事件处理在vba中使用动态事件处理程序

Option Explicit 

Public WithEvents cbx As MSforms.Combobox 
Private avarSplit As Variant 

Sub SetCombobox(ctl As MSforms.Combobox) 
    Set cbx = ctl 
End Sub 

Private Sub cbx_Change() 
Dim i As Integer 
    If cbx.ListIndex > -1 Then 
    'MsgBox "You clicked on " & cbx.Name & vbLf & "The value is " & cbx.Value 
    avarSplit = Split(cbx.Name, "_") 
    'DecessionOnValue 
End If 
End Sub 

,这里是它是动态创建文本框和组合框

Function AddTextBox(Frame1 As frame, numberOfColumns As Integer) 

Dim counter As Integer 
Dim i As Integer 
Dim TxtBox As MSforms.TextBox 
For counter = 1 To numberOfColumns 
            'Forms.CommandButton.1 
    Set TxtBox = Frame1.Controls.Add("Forms.TextBox.1") 
    TxtBox.Name = "tb_" + CStr(counter) 
    'Bouton.Caption = "Test" 
    TxtBox.Visible = True 
    i = Property.TextBoxDisable(TxtBox) 
    ' Defining coordinates TextBox height is 18 
    If counter = 1 Then 
     TxtBox.Top = 23 
    Else 
     TxtBox.Top = (18 * counter) + 5 * counter 
    End If 
     TxtBox.Left = 50 
    Next counter 
End Function 

Function Combobox(Frame1 As frame, numberOfColumns As Integer) 

Dim counter As Integer 
Dim i As Integer 
Dim CbBox As MSforms.Combobox 
Dim cbx As ComboWithEvent 

If pComboboxes Is Nothing Then Set pComboboxes = New Collection 
    For counter = 1 To numberOfColumns 
            'Forms.CommandButton.1 
    Set CbBox = Frame1.Controls.Add("Forms.ComboBox.1") 
    CbBox.Name = "cb_" + CStr(counter) 
    i = AddComboboxValues(CbBox) 
    ' Defining coordinates TextBox height is 18 
    If counter = 1 Then 
     CbBox.Top = 23 
    Else 
     CbBox.Top = (18 * counter) + 5 * counter 
    End If 
     CbBox.Left = 150 
     Set cbx = New ComboWithEvent 
     cbx.SetCombobox CbBox 
     pComboboxes.Add cbx 
    Next counter 
    i = AddScrollBar(Frame1, counter) 

End Function 

组合框事件处理程序工作正常窗体上的代码,但我的问题是,我不知道如何复制文本框的文本或根据动态组合框中选择的值启用禁用文本框。

感谢, Jatin

+0

您需要动态地将事件处理代码插入到每个组合框中。 – Pynner 2013-02-11 13:28:18

回答

0

你会用这个例子:

Me.Controls( “控件名称”)可见=真或代替可见,您可以使用启用,禁用等。

相关问题