Excel 在范围内的值上生成组合框列表跳过空单元格

Excel 在范围内的值上生成组合框列表跳过空单元格,excel,vba,Excel,Vba,我在主工作表上有组合框。组合框名称为SignatureBox。我想根据工作表联系人数据库中A55:A80范围内的值构建组合框列表。在A55:A80范围内,我有类似于=IFC7=;;C7,所以他们返回空单元格,我想跳过这些单元格,并仅使用可用值构建列表。由于某些原因,我当前的代码无法一直工作。在第二次单击组合框时,列表变得混乱,所有值都加倍。有什么问题吗 它似乎与工作表_的变化,但然后我必须去工作表联系数据库,并作出改变。它被工作表搞得一团糟 在组合框属性中,我将LinckedCell设置为“联系

我在主工作表上有组合框。组合框名称为SignatureBox。我想根据工作表联系人数据库中A55:A80范围内的值构建组合框列表。在A55:A80范围内,我有类似于=IFC7=;;C7,所以他们返回空单元格,我想跳过这些单元格,并仅使用可用值构建列表。由于某些原因,我当前的代码无法一直工作。在第二次单击组合框时,列表变得混乱,所有值都加倍。有什么问题吗

它似乎与工作表_的变化,但然后我必须去工作表联系数据库,并作出改变。它被工作表搞得一团糟


在组合框属性中,我将LinckedCell设置为“联系人数据库”!R4这将进入工作表联系人数据库的工作表模块:

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim c As Range, sb As Object

    'any changes in Col C ?
    If Not Application.Intersect(Target, Me.Columns(3)) Is Nothing Then

        Set sb = ThisWorkbook.Sheets("MAIN").SignatureBox
        sb.Clear

        'add non-blank values
        For Each c In me.Range(me.Range("A55"), me.Range("A" & me.Rows.Count).End(xlUp))
            If Len(c.Value)>0 then sb.AddItem c.Value
        Next c

    End If

End Sub

此代码在哪个工作表模块中?@TimWilliams我在不同的工作表中尝试过它,它仅适用于工作表\u更改,而不适用于工作表\u计算。为什么会这样?
Private Sub Worksheet_Change(ByVal Target As Range)

    Dim c As Range, sb As Object

    'any changes in Col C ?
    If Not Application.Intersect(Target, Me.Columns(3)) Is Nothing Then

        Set sb = ThisWorkbook.Sheets("MAIN").SignatureBox
        sb.Clear

        'add non-blank values
        For Each c In me.Range(me.Range("A55"), me.Range("A" & me.Rows.Count).End(xlUp))
            If Len(c.Value)>0 then sb.AddItem c.Value
        Next c

    End If

End Sub