EXCEL VBA组合框匹配

EXCEL VBA组合框匹配,excel,vba,combobox,Excel,Vba,Combobox,说明: 图1 根据图像1,级别1是对象,级别2是对象的类型 图2 在图2中,如您所见,我分别为级别1和级别2将它们命名为ComboBox1和Combox2 我想要实现的目标: 当用户选择ComboBox1时,它将显示一组级别1项目,如A2:XFD2中的图像所示,无空单元格 然后,根据ComboBox1中的选择,Combox2将根据Combox1中的值列出级别2,如图1所示 提前感谢将此添加到您的用户表单代码中: Private Sub UserForm_Initialize() Dim rn

说明: 图1

根据图像1,级别1是对象,级别2是对象的类型


图2

在图2中,如您所见,我分别为
级别1
级别2
将它们命名为
ComboBox1
Combox2

我想要实现的目标:

  • 当用户选择
    ComboBox1
    时,它将显示一组
    级别1
    项目,如
    A2:XFD2
    中的图像所示,无空单元格
  • 然后,根据
    ComboBox1
    中的选择,
    Combox2
    将根据
    Combox1
    中的值列出
    级别2
    ,如图1所示

  • 提前感谢

    将此添加到您的用户表单代码中:

    Private Sub UserForm_Initialize()
    
    Dim rnLevel1 As Range, rnLevel2 As Range, rnTemp As Range
    
    Set rnLevel1 = Sheet1.Cells(2, Sheet1.UsedRange.Columns.Count)
    
    ComboBox2.Clear 'Clear all values first
    
    For Each rnTemp In rnLevel1
        If rnTemp.Value <> "" And rnTemp.Value <> "Level 1" Then ' Add values NOT INCLUDING Level 1 to Combobox1
            ComboBox1.AddItem rnTemp.Value
        End If
    Next
    
    
    End Sub
    
    Private Sub ComboBox1_Change()
    Dim rnLevel1 As Range, rnLevel2 As Range, rnTemp As Range
    
    Set rnLevel1 = Sheet1.Cells(2, Sheet1.UsedRange.Columns.Count).Find(ComboBox1.Value) 'Find the correct column
    Set rnLevel2 = Sheet1.Range(rnLevel1.Offset(1, 0), Sheet1.Cells(Sheet1.Rows.Count, rnLevel1.Column).End(xlUp))
    
    ComboBox2.Clear 'Clear all values first
    
    For Each rnTemp In rnLevel2
        If rnTemp.Value <> "" Then  ' Add values to Combobox2
            ComboBox2.AddItem rnTemp.Value
        End If
    Next
    
    End Sub
    
    Private子用户表单_Initialize()
    调光rnLevel1作为范围,rnLevel2作为范围,rnTemp作为范围
    设置rnLevel1=Sheet1.Cells(2,Sheet1.UsedRange.Columns.Count)
    ComboBox2.Clear“首先清除所有值
    对于rnLevel1中的每个rnTemp
    如果rnTemp.Value“”和rnTemp.Value“级别1”,则“将不包括级别1的值添加到Combobox1
    ComboBox1.AddItem rnTemp.值
    如果结束
    下一个
    端接头
    专用子组合框1_Change()
    调光rnLevel1作为范围,rnLevel2作为范围,rnTemp作为范围
    设置rnLevel1=Sheet1.Cells(2,Sheet1.UsedRange.Columns.Count).Find(ComboBox1.Value)'查找正确的列
    设置rnLevel2=Sheet1.Range(rnLevel1.Offset(1,0),Sheet1.Cells(Sheet1.Rows.Count,rnLevel1.Column)。结束(xlUp))
    ComboBox2.Clear“首先清除所有值
    对于rnLevel2中的每个rnTemp
    如果rnTemp.值为“”,则将值添加到Combobox2
    ComboBox2.AddItem rnTemp.值
    如果结束
    下一个
    端接头