提取新值到ActiveX组合框,跳过空单元格

时间:2019-05-21 12:37:21

标签: excel vba

我想根据范围值自动将值获取到工作表上的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

1 个答案:

答案 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