在excel用户窗体上编码多个组合框

威利

我有一个带有多个从属组合框的用户窗体。我想将以下代码添加到Comboboxes Change事件的10个中。要编码的组合框编号为11到20(组合框11,组合框12等),而从属组合框的编号为21到30。

我可以将代码复制并粘贴10次,然后找到并替换相关的组合框编号。

有没有办法通过组合框使用循环来实现这一目标?任何帮助将不胜感激。

Private Sub ComboBox11_Change()

Dim index As Integer
index = ComboBox11.ListIndex
ComboBox21.Clear

Select Case index
    Case Is = 0
        With ComboBox21
            .RowSource = Range("SubCat1").Address(external:=True)
        End With

    Case Is = 1
        With ComboBox21
            .RowSource = Range("SubCat6").Address(external:=True)
        End With

    Case Is = 2
        With ComboBox21
            .RowSource = Range("SubCat7").Address(external:=True)
        End With

    Case Is = 3
        With ComboBox21
            .RowSource = Range("SubCat8").Address(external:=True)
        End With

    Case Is = 4
        With ComboBox21
            .RowSource = Range("SubCat9").Address(external:=True)
        End With

    'and several more case options

End Select

End Sub
Shai Rado

您可以使用模块和User_Init子类来将用户窗体中的每个ComboBox控件设置为此类。

在我的代码中,我使用Main_Form作为User_Form的名称,根据您的User_Form名称修改代码。

添加一个呼叫模块,并在下面的第1类中添加此代码:

Public WithEvents ComboBoxEvents As MSForms.ComboBox

 ' anytime a Change event occurs to any ComboBox, the Sub is triggered
Private Sub ComboBoxEvents_Change()

Dim ComboBox_Index As String
Dim index As Integer

    With ComboBoxEvents
        ' read the index of the ComboBox, as long as the names remain ComboBox1, ComboBox2, ComboBox3, etc...
        ComboBox_Index = Mid(.Name, 9)

        ' run this code if it's ComboBox 11 to 20
        If ComboBox_Index >= 11 And ComboBox_Index <= 20 Then
            index = .ListIndex

            Select Case index
                Case Is = 0
                    With Main_Form.Controls("ComboBox" & ComboBox_Index + 10)
                        .RowSource = Range("SubCat1").Address(external:=True)
                    End With

                Case Is = 1
                    With Main_Form.Controls("ComboBox" & ComboBox_Index + 10)
                        .RowSource = Range("SubCat6").Address(external:=True)
                    End With

                Case Is = 2
                    With Main_Form.Controls("ComboBox" & ComboBox_Index + 10)
                        .RowSource = Range("SubCat7").Address(external:=True)
                    End With

                Case Is = 3
                    With Main_Form.Controls("ComboBox" & ComboBox_Index + 10)
                        .RowSource = Range("SubCat8").Address(external:=True)
                    End With

                Case Is = 4
                    With Main_Form.Controls("ComboBox" & ComboBox_Index + 10)
                        .RowSource = Range("SubCat9").Address(external:=True)
                    End With

                'and several more case options

            End Select                
        End If
    End With

End Sub

下面的代码在您的User_Form_Init中(在我的代码中,User_Form的名称为Main-Form):

Option Explicit

Dim ComboBoxes() As New Class1

Private Sub UserForm_Initialize()

    Dim ComboBoxCounter As Integer, Obj As Control

    For Each Obj In Me.Controls
        If TypeOf Obj Is MSForms.ComboBox Then
            ComboBoxCounter = ComboBoxCounter + 1
            ReDim Preserve ComboBoxes(1 To ComboBoxCounter)
            Set ComboBoxes(ComboBoxCounter).ComboBoxEvents = Obj
        End If
    Next Obj

    Set Obj = Nothing

End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在excel用户窗体上编码多个组合框

来自分类Dev

用户窗体组合框

来自分类Dev

VBA用户窗体组合框

来自分类Dev

Excel VBA根据多个用户窗体组合框中的多列数据匹配条件选择一行

来自分类Dev

在Excel 2013上使用VBA填充组合框(窗体控件)

来自分类Dev

Excel VBA-创建具有多个组合框的动态用户窗体并将所有组合框的值存储在一个数组中并对其进行排序

来自分类Dev

如何根据excel中用户窗体上的组合框选择添加标签和文本框

来自分类Dev

用户窗体关闭后组合框更新

来自分类Dev

Excel VBA用户窗体/按钮编码

来自分类Dev

用户窗体组合框仅采用第一个值-Excel VBA

来自分类Dev

在Excel VBA用户窗体中将.AddItem与不同的组合框一起使用

来自分类Dev

VBA Excel-带有组合框的用户窗体过滤并编写

来自分类Dev

从一系列单元格填充用户窗体上的组合框

来自分类Dev

用户窗体组合框未在初始化时填充

来自分类Dev

用户窗体组合框未填充外部数据范围

来自分类Dev

使用列表列填充用户窗体中的组合框

来自分类Dev

vba excel,如何重命名用户窗体上的文本框

来自分类Dev

如何检查 Excel 用户窗体上的所有文本框是否已填充?

来自分类Dev

组合框中的选定值以在Excel VBA /用户窗体中打开另一个工作表

来自分类Dev

从组合框(窗体控件)Excel VBA中检索选定的选项

来自分类Dev

从组合框(窗体控件)Excel VBA中检索选定的选项

来自分类Dev

在Access窗体上动态设置组合框的值

来自分类Dev

如何从文本框输入中填充用户窗体列表框/组合框数组/列表?

来自分类Dev

Excel用户窗体文本框常量设置焦点

来自分类Dev

如何删除小数点前的前导零?Excel已格式化,但我的用户窗体中的组合框正在添加它们

来自分类Dev

Excel VBA在工作表上的用户窗体上填充文本框,具体取决于另一个文本框输入

来自分类Dev

列表框用户窗体中的多项选择并将多个列表框值作为一个数组存储到 Excel 表中

来自分类Dev

在用户窗体Excel上禁用键盘输入

来自分类Dev

使用循环来验证Excel用户窗体上的条目?

Related 相关文章

  1. 1

    在excel用户窗体上编码多个组合框

  2. 2

    用户窗体组合框

  3. 3

    VBA用户窗体组合框

  4. 4

    Excel VBA根据多个用户窗体组合框中的多列数据匹配条件选择一行

  5. 5

    在Excel 2013上使用VBA填充组合框(窗体控件)

  6. 6

    Excel VBA-创建具有多个组合框的动态用户窗体并将所有组合框的值存储在一个数组中并对其进行排序

  7. 7

    如何根据excel中用户窗体上的组合框选择添加标签和文本框

  8. 8

    用户窗体关闭后组合框更新

  9. 9

    Excel VBA用户窗体/按钮编码

  10. 10

    用户窗体组合框仅采用第一个值-Excel VBA

  11. 11

    在Excel VBA用户窗体中将.AddItem与不同的组合框一起使用

  12. 12

    VBA Excel-带有组合框的用户窗体过滤并编写

  13. 13

    从一系列单元格填充用户窗体上的组合框

  14. 14

    用户窗体组合框未在初始化时填充

  15. 15

    用户窗体组合框未填充外部数据范围

  16. 16

    使用列表列填充用户窗体中的组合框

  17. 17

    vba excel,如何重命名用户窗体上的文本框

  18. 18

    如何检查 Excel 用户窗体上的所有文本框是否已填充?

  19. 19

    组合框中的选定值以在Excel VBA /用户窗体中打开另一个工作表

  20. 20

    从组合框(窗体控件)Excel VBA中检索选定的选项

  21. 21

    从组合框(窗体控件)Excel VBA中检索选定的选项

  22. 22

    在Access窗体上动态设置组合框的值

  23. 23

    如何从文本框输入中填充用户窗体列表框/组合框数组/列表?

  24. 24

    Excel用户窗体文本框常量设置焦点

  25. 25

    如何删除小数点前的前导零?Excel已格式化,但我的用户窗体中的组合框正在添加它们

  26. 26

    Excel VBA在工作表上的用户窗体上填充文本框,具体取决于另一个文本框输入

  27. 27

    列表框用户窗体中的多项选择并将多个列表框值作为一个数组存储到 Excel 表中

  28. 28

    在用户窗体Excel上禁用键盘输入

  29. 29

    使用循环来验证Excel用户窗体上的条目?

热门标签

归档