多个 ListBox Selection,根据选择动态更新文本

Multiple ListBox Selection, dynamically update text based on selections

我有一个填充 multi-selection 列表框的用户窗体(基于来自隐藏 sheet 的 comma-delimited 单元格)。

如果用户 select 是列表框中的单个项目,我希望根据他们的 selection 显示该项目的特定注释。

如果他们 select 多个,我希望注释将他们刚刚 selected 的项目的注释添加到现有的项目,而不复制最初的 selected 项目.

如果用户 de-selects 原始项目但保留第二个项目,则现在有需要删除的不可见行。除了重复...

目前我的代码是:

'check for nothing selected
If Driver_Sel = "" Then
    'nothing selected
    lbl_driverID.Caption = ""
End If

If InStr(1, Driver_Sel, "PC-CR") <> 0 Then
    'PCCR format
    lbl_driverID.Visible = True
    lbl_driverID.Caption = lbl_driverID.Caption & vbNewLine & "-PC-CR: use Format: PCCR-0000xxxx/001"
ElseIf Not InStr(1, Driver_Sel, "PC-CR") <> 0 Then
    'remove PCCR
    lbl_driverID.Visible = True
    lbl_driverID.Caption = Replace(lbl_driverID.Caption, "-PC-CR: use Format: PCCR-0000xxxx/001", "")
End If

If InStr(1, Driver_Sel, "PRTS") <> 0 Then
    'PRTS
    lbl_driverID.Visible = True
    lbl_driverID.Caption = lbl_driverID.Caption & vbNewLine & "-PRTS: include a PRTS#"
ElseIf Not InStr(1, Driver_Sel, "PRTS") <> 0 Then
    'remove PCCR
    lbl_driverID.Visible = True
    lbl_driverID.Caption = Replace(lbl_driverID.Caption, "-PRTS: include a PRTS#", "")
End If

我认为这是因为我有标签的标题(蓝色文本)使用它的现有值然后添加新项目..即使它是重复的。

我在这里有点难过...任何关于只显示一个注释实例的帮助?

提前致谢!!

lbl_driverID.Caption 应在两次执行之间重置。否则,每次列表框选择更改时,它只会累积文本。

在 If Else 块的开头尝试 lbl_driverID.Caption = ""

例如:

用户打开一个新的用户表单。用户选择“PC-CR”作为第一个值。 lbl_driverID.Caption 为空白,脚本为其分配值“-PC-CR:使用格式:PCCR-0000xxxx/001”。

然后用户选择其他内容,但选择仍然包含第一个选择值“PC-CR”。所以脚本 re-adds 的值与标题相同。这就是 double-up 的来源。

对于隐形线:

这是因为您在每个新项目的标题中添加了 vbNewLine,但您只是删除了文本,而不是 vbNewline。 查看这两行之间的区别:

lbl_driverID.Caption & vbNewLine & "-PC-CR: use Format: PCCR-0000xxxx/001"
Replace(lbl_driverID.Caption, "-PC-CR: use Format: PCCR-0000xxxx/001", "")

请注意 vbNewLine 未计算在内。