【问题标题】:Multiple ListBox Selection, dynamically update text based on selections多个列表框选择,根据选择动态更新文本
【发布时间】:2021-09-28 07:15:15
【问题描述】:

我有一个用户窗体,它填充了一个多选列表框(基于隐藏工作表中的逗号分隔单元格)。

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

如果他们选择了 MULTIPLE,我希望备注将他们刚刚选择的项目的备注添加到现有的备注中,而不复制最初选择的项目。

如果用户取消选择原始项目但保留第二个项目,则现在需要删除不可见的线条。除了重复...

目前我的代码是:

'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

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

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

提前谢谢你!!

【问题讨论】:

  • 每次用户选择或取消选择某些内容时,只需从选择中重建整个标题,而不是从标题中添加/删除。这会容易得多,而且标题总是适合选择。

标签: excel vba listbox userform


【解决方案1】:

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

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

例如:

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

然后用户选择了其他东西,但选择仍然包含第一个选择的值“PC-CR”。因此脚本重新将相同的值添加到标题中。这就是翻倍的来源。

对于不可见的线条:

这是因为您将 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 未计算在内。

【讨论】:

    猜你喜欢
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2019-10-11
    相关资源
    最近更新 更多