如何动态获取userform控件名称的数字部分 - VBA

时间:2013-11-06 14:03:54

标签: excel vba combobox userform

我有2个小组合框列表。第一个列表是标记类型(1-5)。第二个列表是标签产品(1-5)。我想填写每个PRODUCT框,等待在相应的TYPE框中进行的选择。我目前正在做以下事情......

Private Sub Type1_Change()
    NavComboPropChange
End Sub

Sub NavComboPropChange()
    If BaseActiveControl.Name = "AVM" Then
         = Worksheets("Setup").Range("AVM").Value
    ElseIf BaseActiveControl.Name = "Appraisal" Then
         = Worksheets("Setup").Range("APPRAISAL").Value
    Else
         = Worksheets("Setup").Range("TITLES").Value
    End If
End Sub

BaseActiveControl.name 抓取当前选中的根控件元素。在IF中等号之前,ElseIf,Else序列将是产品名称和相应的值。

要重述我的问题,我想知道如何抓住控件名称的数字部分以与产品盒名称一起使用。

1 个答案:

答案 0 :(得分:0)

我使用这条路线找到了解决方案。

Sub NavComboPropChange()
    Dim myString As String
    myString = Right(BaseActiveControl.Name, Len(BaseActiveControl.Name) - 4)
    If BaseActiveControl.Value = "AVM" Then
        Controls("Products" & myString).List = Worksheets("Setup").Range("AVM").Value
    ElseIf BaseActiveControl.Value = "Appraisal" Then
        Controls("Products" & myString).List = Worksheets("Setup").Range("APPRAISAL").Value
    Else
        Controls("Products" & myString).List = Worksheets("Setup").Range("TITLES").Value
    End If
End Sub