【问题标题】:Two ListBoxes - one returning an empty value两个 ListBox - 一个返回空值
【发布时间】:2019-08-01 08:37:18
【问题描述】:

我在 VBA 中有一个带有两个 ListBox 的用户窗体。在UserForm_Initialize() 期间,每个框都会被填满。我为此使用了一个循环,以便只将文本项添加到用户窗体并忽略空单元格:

Private Sub UserForm_Initialize()
    Dim i As Integer
    For i = 1 To 8
        If Sheets("Data").Cells(2 + i, 10) <> "" Then
            ListBox1.AddItem Sheets("Data").Cells(2 + i, 10)
        End If
    Next i

    For i = 1 To 7
        If Sheets("Data").Cells(11 + i, 10) <> "" Then
            ListBox2.AddItem Sheets("Data").Cells(11 + i, 10)
        End If
    Next i
End Sub

用户可以(单次)在每个 ListBox 中选择一个条目,或者使用按钮从工作表中的两个单元格中加载/选择先前的值:

Private Sub CommandButtonLoad_Click()
    ListBox1.Value = Sheets("Input").Cells(15, 1)
    ListBox2.Value = Sheets("Input").Cells(17, 1)
End Sub

然后,另一个按钮会将选定的 ListBox 值写入包含先前值的(相同)单元格中。

Private Sub CommandButtonConfirm_Click()
    Sheets("Input").Cells(15, 1) = ListBox1.Value
    Sheets("Input").Cells(17, 1) = ListBox2.Value
End Sub

问题: 只要我在用户窗体中手动选择 ListBox 项目,一切都会按预期工作,第三个代码将在单元格 (15, 1) 和 (17, 1) 中重写正确的值(顺便说一下是文本) )。但是,如果我使用按钮(代码 2)用工作表中的先前值填充 ListBox,则只会为一个 ListBox 分配正确的值(输出“Item XYZ”)。另一个得到一个空值(输出:“”)。

当我使用选项卡在用户窗体中选择列表框时,问题消失了。我想这等于用鼠标光标选择项目。

我不知道如何解决这个问题。特别是因为两个 ListBox 之一按预期工作。有人知道这是什么原因吗?

编辑:澄清:使用“加载”按钮,两个值都在列表框中正确选择。但是一个 ListBox 的赋值是空的(使用msgbox ListBox1.valuemsgbox ListBox2.value 测试)。 还有一件事:如果我将ListBox1.SetFocusListBox2.SetFocus 添加到CommandButtonLoad,问题就解决了。但我仍然不知道是什么原因造成的。

【问题讨论】:

  • 你试过用ListBox1.Text代替.value吗?
  • 另一个是数值吗?如果是,请使用 Cstr(Sheets("Input")....
  • 我无法重现该问题。我在用户窗体中添加了 2 个列表框和 2 个按钮并添加了您的代码,如果我按下确认按钮,选定的值将写入输入表,如果我按下加载按钮,那么在两个列表框中都选择了正确的值。我使用A, B, C, … 作为示例数据,一切正常。
  • 当您点击CommandButtonLoad 时,列表框中的正确值是否会突出显示/选中?
  • @horst no differenceece @ EvR Nope。所有单元格具有相同的格式。 @StavrosJon 不。 Sheets("Input").Cells(15, 1) 的值是正确的(“项目 XYZ”),但 ListBox1.Value 的值是错误的(“”)。

标签: excel vba listbox


【解决方案1】:

试试:

Private Sub CommandButtonConfirm_Click()

    Sheets("Data").Cells(15, 1) = ListBox1.List(ListBox1.ListIndex)
    Sheets("Data").Cells(17, 1) = ListBox2.List(ListBox2.ListIndex)

End Sub

【讨论】:

    猜你喜欢
    • 2020-02-14
    • 2015-10-09
    • 2021-12-03
    • 2014-02-11
    • 2021-12-05
    • 2023-04-09
    • 2016-07-17
    • 2021-04-14
    • 2017-09-02
    相关资源
    最近更新 更多