簡體   English   中英

將Combobox的單擊按鈕移動到下一行Excel VBA

[英]Move Combobox onclick of a button to a next row excel VBA

我已經創建了一個vba代碼來創建組合框,並填充了我的命名范圍。 現在,當我從組合框中選擇某項內容時,我想使其在當前單元格中設置該值,並且它應該移至下一行,以便我可以繼續在組合框中為每個單元格設置一個值。

我有以下代碼來創建組合框,但我不知道如何使用.onaction使它移動到下一行

Sub AddComboBoxes()
Dim cb As Object
Dim aCell As Range, r As Long


For i = 1 To 1
    Set aCell = Sheet1.Cells(i, 5)
    Set cb = Sheet1.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Left:=aCell.Left, Top:=aCell.Top, Width:=aCell.Width, Height:=aCell.Height)
    cb.Placement = xlMoveAndSize
    cb.Name = "ComboBoxN1"
    cb.ListFillRange = "N1"
    cb.OnAction = "N1.value"

Next

End Sub

請幫忙。

就像我提到的.OnAction不是OLEObjects的屬性而是DropDowns的屬性

參見此示例,該示例將在Col 5中創建下拉菜單5次,並將"Sheet2!A1:A5"分配為ListFillRange並在DropDown中選擇一個選項時執行CallMe

邏輯:

  1. 在循環中將您的DropDown命名為"ComboBoxN" & i ,以便我們稍后可以檢索它們所在的行。
  2. 您的帖子說,該組合的值應在當前單元格中設置。 我在下面的示例中使用Col A單元格。 進行相應的更改。
  3. 我假設您的DropDowns從第一行開始。 如果不是,那么您將不得不更改在Sub CallMe()中確定行號的邏輯

碼:

Sub AddComboBoxes()
    Dim cb As Object
    Dim aCell As Range
    Dim i As Long

    For i = 1 To 5
        Set aCell = Sheet1.Cells(i, 5)
        Set cb = Sheet1.DropDowns.Add(aCell.Left, aCell.Top, aCell.Width, aCell.Height)
        cb.Placement = xlMoveAndSize
        cb.Name = "ComboBoxN" & i
        cb.ListFillRange = "Sheet2!A1:A5"
        cb.OnAction = "CallMe"
    Next
End Sub

您的CallMe應該是這樣的

Sub CallMe()
    Dim rw As Long
    Dim cb As Object

    '~~> Extract the number from the dropdown to
    '~~> identify which row is it in
    rw = Val(Trim(Replace(Application.Caller, "ComboBoxN", "")))

    Set cb = Sheet1.DropDowns(rw)

    '~~> We are setting the value in Col A. Chnage as applicable
    Sheet1.Range("A" & rw).Value = cb.Value

    '~~> Activate the next cell.
    Sheet1.Range("A" & rw + 1).Activate
End Sub

屏幕截圖:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM