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

时间:2015-02-14 16:23:41

标签: excel vba

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

   A   B
1  a  ddd
2  a  fgh
3  a  jcv
4  b  ggh
5  b  ggg
6  b  fff
7  b  hhh

例如
如果我选择" b"在combobox1中然后这些字符串应该添加到combobox2: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

1 个答案:

答案 0 :(得分:1)

你的代码看起来很像你的问题。我只能指出一些错误。

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

  1. Index声明为公开,以便其他子可以访问它。在第一个事件子项之外,添加第Public Index As String行。
  2. 您应该使用case "a"而不是case Is = a的案例选择。 Is运算符用于比较对象引用,同时,您正在处理简单的数据类型比较。
  3. case "a"case "b"说明中,在with语句中,使用For Each语句循环显示值范围“B”。它看起来像下面的代码示例中的内容。
  4. 在你的问题中,你说:
  5.   

    例如,如果我在combobox1中选择“b”,那么这些字符串应该是   添加到combobox2:ggh,ggg,fff和hhh

    但是,你用第A列中的值填充你的第一个comobox,我只能假设你想说B,否则,你的选择案例陈述将无效。

    代码示例:

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