【问题标题】:Excel VBA ListBox (userform) - Multiple Selection Problem with fmMultiSelectSingleExcel VBA ListBox (userform) - fmMultiSelectSingle 的多选问题
【发布时间】:2019-09-12 15:25:44
【问题描述】:

实际上,我只是在这里创建了自己的帐户,因为我无法找到当前 Excel VBA 问题的答案。

我正在创建一个带有 ListBox 的用户窗体,它通过一个多维数组填充。在某些情况下,单击 ListBox 后也会重新填充 ListBox,例如在该 List 的新行中(这会自动导致单击事件)。

参考我的问题的标题,我发现单击列表的新行时,前一行和所选行都带有下划线(即“单击”,即使 ListBox 的 MultiSelect 选项设置为“0-fmMultiSelectSingle”)。如果我请求 .ListIndex 值,它只会显示上一行的值(而不是现在新选择的行)。

但最大的问题是列表框的重新填充,只有 (!) 在列表的新行中单击(并创建此多选)时似乎不起作用。

我提供了我的情况的示例代码。当然,我的代码要复杂得多,所以我尝试将其缩短到主要方面。我很乐意向你们发送我的用户表单的屏幕截图,但数据是合理的(无论如何我希望你们能理解我的问题)。

问题:是否有解决方案或足够的解决方法来填充 ListBox 在以下情况下 - 通过点击事件 - 您在 ListBox 中选择了一个新行?

提前感谢您的热心帮助。我已经尝试和寻找了很长一段时间了;也许有人以前遇到过类似的问题!

-Graf_Rasen

Sub ListBox_Click()

intListIndex = Userform.ListBox.ListIndex

'When evaluating intListIndex in combination with clicking in a new row of 'the ListBox (which executes "Sub ListBox_Click"), intListIndex merely returns the value of the previously selected ListIndex 

'defaults ListIndex, needs to be done for repopulation
Userform.ListBox.ListIndex = -1

'This does not work when changing into a new row in the ListBox
Userform.ListBox.List() = arr_DataListBox

'Redefines ListIndex
Userform.ListBox.ListIndex = intListIndex

End Sub

【问题讨论】:

  • 我无法重现该问题。您确定没有通过任何地方的代码将其重置为fmMultiSelectMulti

标签: excel vba


【解决方案1】:

您不能单击列表框中的“新”行。看起来您正在选择一个新行,但实际上触发的事件只是您单击了列表框这一事实。因此 ListIndex 值仍然显示前一个选择的索引(实际上仍然是当前选择。

【讨论】:

  • 谢谢,这很有道理。 “多选”实际上只是我所做的一个观察(我认为这可能是问题的一部分)。无论如何,是否有可能的解决方法来重新填充事件(listbox_click)本身中的列表框?该代码不会给我一个错误,但不会将列表框更改为适应的..
  • arr_DataListBox 来自哪里?您确定它与当前列表框中的内容不同吗?此外,您应该在模块顶部添加 Option Explicit 并显式声明变量。
  • 也许我应该在这里多谈谈“故事”,我想这会有所帮助和澄清。此列表框在多维数组中显示客户数据(姓名、公司、电话……)(其中每一行是客户,每一列是上述之一(姓名、公司、……)。完整信息客户端的信息不仅显示在列表中,还显示在用户窗体内的多个文本框中。您可以在文本框中编辑/更改客户端信息,将其保存到多数组中,然后放入列表框。.. .
  • ... 如果关系经理正在更改文本框中的某些客户信息,然后单击 ListBox 中的新客户,我会遇到上述问题。 (正确的)新数组已构建并显然放入 ListBox(没有 VBA 错误),但 ListBox(您最终可以实际看到的)没有更改,即您之前对客户端所做的更改没有预计。我没有添加“选项显式”,而是声明了所有变量...
  • ...(如果没有明确的变量定义,我猜在所有其他情况下编辑客户端数据(即 ListBox)时都会出错。)
猜你喜欢
  • 2018-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多