我想根据范围值自动将值获取到工作表上的ActiveX组合框。我想在用户每次打开下拉列表时激活代码。我想出了当前的解决方案,但有时它会显示值x 3或4。代码可能有什么问题?
在范围B55:B71中,我有列表值。它们按公式显示,其中一些为=if(A1="";"";A1)
(了解结果的公式示例)(空)。
这是我的代码:
Private Sub CommercialBox_Click()
Dim RngCom As Range
ThisWorkbook.Sheets("MAIN").CommercialBox.Clear
With ThisWorkbook.Sheets("Contact database")
For Each RngCom In .Range(.Range("B55"), .Range("B71" & .Rows.Count).End(xlUp))
If RngCom.Value <> vbNullString Then ThisWorkbook.Sheets("MAIN").CommercialBox.AddItem RngCom.Value
Next RngCom
End With
End Sub
答案 0 :(得分:1)
要详细说明我的意见,
您声明希望此代码在用户打开下拉菜单时而不是在单击的值时运行。您当前的代码仅在选择一个值时运行。打开下拉列表时,DropButtonClick
将被激活。
您还指定了B55:B71
的固定范围,所以为什么不执行该...
Private Sub CommercialBox_DropButtonClick()
Dim RngCom As Range
ThisWorkbook.Sheets("MAIN").CommercialBox.Clear
With ThisWorkbook.Sheets("Contact database")
For Each RngCom In .Range("B55:B71")
If RngCom.Value <> vbNullString Then ThisWorkbook.Sheets("MAIN").CommercialBox.AddItem RngCom.Value
Next RngCom
End With
End Sub