Excel VBA基于另一个组合框将列的值添加到组合框中

Excel VBA基于另一个组合框将列的值添加到组合框中,excel,vba,Excel,Vba,我想将A列中的项目添加到combobox1,然后根据combobox1值将B列中的项目添加到Combox2 A B 1 a ddd 2 a fgh 3 a jcv 4 b ggh 5 b ggg 6 b fff 7 b hhh 例如 如果我在combobox1中选择“b”,那么这些字符串应该添加到Combox2中:ggh、ggg、fff和hhh 我的代码不起作用。先谢谢你 Private Sub ComboBox1_Change() With Sheet3

我想将A列中的项目添加到combobox1,然后根据combobox1值将B列中的项目添加到Combox2

   A   B
1  a  ddd
2  a  fgh
3  a  jcv
4  b  ggh
5  b  ggg
6  b  fff
7  b  hhh
例如
如果我在combobox1中选择“b”,那么这些字符串应该添加到Combox2中:ggh、ggg、fff和hhh
我的代码不起作用。先谢谢你

Private Sub ComboBox1_Change()
With Sheet3.ComboBox1

For Each Cell In Range("A1:A7")
.AddItem Cell.Value
Next

End With
Dim index As Integer
index = ComboBox1.value
Call combo2
End Sub


Private Sub combo2()

For Each Cell In Range("A1:A7")
Select Case index
    Case Is = a
        With ComboBox2

            .AddItem "offset(cell.address,1,1,1,0)"

        End With
    Case Is = b
        With ComboBox2
            .AddItem "offset(cell.address,1,1,1,0)"
        End With

End Select

Next

End Sub

你的代码看起来真的很混乱,就像你的问题一样。我只能试着指出一些错误

以下是您需要更正的内容:

  • 索引
    声明为公共,以便其他子系统可以访问它。在第一个子事件之外,将行
    公共索引添加为字符串
  • 您应该使用case select,比如
    case“a”
    ,而不是
    case Is=a
    Is
    操作符用于比较对象引用,同时,您正在处理一个简单的数据类型比较
  • 在您的
    案例“a”
    案例“b”
    说明中,在您的
    with
    语句中,对每个
    语句使用
    ,在值的范围“b”中循环。它看起来像下面的代码示例
  • 在你的问题中,你说:
  • 例如,如果我在combobox1中选择“b”,那么这些字符串应该是 添加到combobox2:ggh、ggg、fff和hhh

    但是,您正在用A列中的值填充第一个框,我只能假设您的意思是B,否则,select case语句将无法工作

    代码示例:

    For Each Cell in Range("B1:B7")
    If Cell.Value = "a" Then
    .AddItem Cell.Offset(0,1).Value
    End If
    Next
    

    谢谢你的回复。我想在第一个组合框中填入A列,在第二个组合框中填入B列。请查看相关表格。这证实了我在回答中的暂停。你很容易把我的话融入你的代码中。