从组合框中选择下一个项目,然后单击按钮Excel VBA

从组合框中选择下一个项目,然后单击按钮Excel VBA

问题描述:

将一个组合框&命令按钮放置在Excel工作表上。 Combobox会列出一些项目,比如它有1,2,3,4,5。当组合框第一次加载时,默认情况下会选择第一个值,即1。从组合框中选择下一个项目,然后单击按钮Excel VBA

现在使用VBA宏,我想从组合框列表(即2)中选择下一个值,然后单击命令按钮。

我GOOGLE了这个,但不幸的是,没有得到我所期待的。

这里是我到目前为止,但它不这样做,我期待什么(如上所述):收到错误消息作为对象不支持此属性或方法上线If Worksheets("QC Update").ComboBox1.SelectedIndex < ComboBox1.Items.Count - 1 Then

Sub Select_Next_Items() 
    If IsEmpty(Range("A9").Value) = True Then 
    If Worksheets("QC Update").ComboBox1.SelectedIndex < ComboBox1.Items.Count - 1 Then 
     ComboBox1.ListIndex = 0 ' select first Item in listbox 
     ComboBox1.ListIndex = ComboBox1.ListCount - 1 ' selects last item 
     Set ComboBox1.SelectedIndex = Worksheets("QC Update").ComboBox1.SelectedIndex + 1 
     Set ComboBox1.ListCount = 0 
    End If  
    End If 
End Sub 
+0

你到目前为止尝试过什么?你必须向我们展示一些努力;请参考[问] –

+0

尝试工作表类中的oleobjects对象 –

+0

它是做什么的?你有什么错误吗?请编辑你的问题,不要使用评论。 –

我想知道这是否是你的意图。

Sub Select_Next_Item() 
    ' 07 Apr 2017 

    Dim Ws As Worksheet 
    Dim Cbx As OLEObject 
    Dim Ix As Integer 

    Set Ws = Worksheets("QC Update") 
    If IsEmpty(Ws.Range("A9").Value) = True Then 
     Set Cbx = Ws.OLEObjects("ComboBox1") 
     With Cbx.Object 
      Ix = .ListIndex + 1 
      If Ix = .ListCount Then Ix = 0 
      If .ListCount Then .ListIndex = Ix 
     End With 
    End If 
End Sub 

如果发现电池A9空,代码会看“ComboBox1”(如果它是不一样的,指定的工作表上发现会崩溃)。它会将该组合框中的选择更改为列表中的下一个值。但是,如果它已经在最后一个列表项中,它将选择第一个,如果组合框中没有列表项,它将不会执行任何操作。

+0

感谢您的回复,我只是将工作表名称修改为我的工作表名称并尝试运行它。如果下标超出范围,Set'Ws = Worksheets(“Update_QC.xlsm”)' –

+0

“Update_QC.xlsm”看起来像文件名,它会给我一个错误。 Ws必须是工作表。最好使用真实姓名,但对于初始测试,您可以将代码设置为“Set Ws = ActiveSheet” – Variatus

最后这个问题与下面的代码解决,

Set Cbx = Worksheets("QC Update").OLEObjects("ComboBox1") 
     With Cbx.Object 
      Ix = .ListIndex + 1 
      If Ix = .ListCount Then Ix = 0 
      If .ListCount Then .ListIndex = Ix 
     End With 

希望你们不觉得在这里得罪了,因为我有一个更清晰,更直接的答案。

ComboBox1.ListIndex = ComboBox1.ListIndex +1 

这是一个更完整的。我们必须考虑到,当它在列表的末尾,因此

If ComboBox1.ListIndex = ComboBox1.ListCount -1 Then 
    ComboBox1.ListIndex =1 

Else 
    ComboBox1.ListIndex = ComboBox1.ListIndex +1 

我希望我的答复是有帮助的你最特别是那些谁是新的VBA和迫切需要使用它。

这很容易理解,如果你有在C++/java编程的坚实背景