[英]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
。
邏輯:
"ComboBoxN" & i
,以便我們稍后可以檢索它們所在的行。 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.