excel - 在范围内的值上构建组合框列表跳过空单元格
问题描述
我在工作表“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
在组合框属性中,我将 LinkedCell 设置为'Contact database'!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
推荐阅读
- git - Git-tfs:获取笔记
- java - 如何检查页面中是否存在弹出窗口?
- haskell - 通过堆栈安装 bhoogle
- r - 从 R 中的线性模型列表中映射 emmeans
- javascript - 如何从另一个任务运行器执行/捆绑 JS 与 Webpack?
- django - Django:在结果中填充用户可选择的数据库字段
- vue.js - 如何只添加一次全局分隔符以使其适用于所有组件?
- c# - 隐式转换问题(整数文字)
- powershell - Send-MailMessage 是否有 Integrated Security=SSPI 选项?
- javascript - 我怎样才能得到 [ Promise {
}]?