我在工作表“ MAIN”上有组合框。组合框的名称为SignatureBox。我想基于A55:A80范围内的工作表“联系数据库”上的值构建组合框列表。在A55:A80范围内,我有类似于=IF(C7="";"";C7)
的公式,因此它们返回的是我想跳过的空单元格,并且仅使用可用值构建列表。由于某种原因,我当前的代码始终无法正常工作。在第二次单击组合框列表时,混乱了,所有值都翻了一番。可能是什么问题?
它似乎可以与Worksheet_Change
一起使用,但是随后我必须在工作表Contact database
上进行更改。 Worksheet_Calculate
Private Sub Worksheet_Change(ByVal Target As Range)
Dim RngCom As Range
ThisWorkbook.Sheets("MAIN").SignatureBox.Clear
With ThisWorkbook.Sheets("Contact database")
For Each RngCom In .Range(.Range("A55"), .Range("A" & .Rows.Count).End(xlUp))
If RngCom.Value <> vbNullString Then ThisWorkbook.Sheets("MAIN").SignatureBox.AddItem RngCom.Value
Next RngCom
End With
End Sub
在组合框属性中,我将LinckedCell设置为'Contact database'!R4
答案 0 :(得分:1)
这将进入工作表模块中的“联系人数据库”工作表:
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