2017-04-07 68 views
0

將一個組合框&命令按鈕放置在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

它是做什麼的?你有什麼錯誤嗎?請編輯你的問題,不要使用評論。 –

回答

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

0

最後這個問題與下面的代碼解決,

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 
1

希望你們不覺得在這裏得罪了,因爲我有一個更清晰,更直接的答案。

ComboBox1.ListIndex = ComboBox1.ListIndex +1 

這是一個更完整的。我們必須考慮到,當它在列表的末尾,因此

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

Else 
    ComboBox1.ListIndex = ComboBox1.ListIndex +1 

我希望我的答覆是有幫助的你最特別是那些誰是新的VBA和迫切需要使用它。

這很容易理解,如果你有在C++/java編程的堅實背景

相關問題