Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA列表框(用户表单)-fmMultiSelectSingle的多选择问题_Excel_Vba - Fatal编程技术网

Excel VBA列表框(用户表单)-fmMultiSelectSingle的多选择问题

Excel VBA列表框(用户表单)-fmMultiSelectSingle的多选择问题,excel,vba,Excel,Vba,实际上,我只是在这里创建了自己的帐户,因为我无法找到当前Excel VBA问题的答案 我正在创建一个带有ListBox的Userform,它通过多维数组填充。在某些情况下,单击列表框后也会重新填充该列表框,例如在该列表的新行中(这会自动导致单击事件) 关于我问题的标题,我发现当单击列表的新行时,上一行和所选行都有下划线(即“单击”,即使列表框的MultiSelect选项设置为“0-fmMultiSelectSingle”)。如果我请求.ListIndex值,它只会显示上一行的值(而不是现在新选择

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

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

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

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

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

问题是:在通过单击事件在列表框中选择新行的情况下,是否有解决方案或足够的解决方法来填充列表框

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

-格拉夫·拉森

子列表框\u单击()
intListIndex=Userform.ListBox.ListIndex
“当评估intListIndex并单击”列表框(执行“Sub ListBox\u Click”)的新行时,intListIndex仅返回先前选择的ListIndex的值
'默认值ListIndex,需要重新填充
Userform.ListBox.ListIndex=-1
'在列表框中更改为新行时,此选项不起作用
Userform.ListBox.List()=arr\u DataListBox
'重新定义ListIndex
Userform.ListBox.ListIndex=intListIndex
端接头

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

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

我无法复制该问题。您确定您没有通过代码任意位置将其重置为
fmMultiSelectMulti
?我无法复制该问题。您确定您没有通过代码任意位置将其重置为
fmmultiselectmuli
?谢谢,这是有意义的“multiselection”实际上只是我观察到的(我认为这可能是问题的一部分)。无论如何,是否有可能在事件中重新填充列表框(listbox\u click)本身?代码没有给我一个错误,但不会将listbox更改为已修改的。arr_DataListBox来自何处?你确定它与listbox中当前的不同吗?此外,你应该在模块顶部添加显式选项并显式声明变量。也许我应该多讲一点关于“故事”的内容“在这里,我想这有助于并澄清问题。此列表框以多维数组的形式显示客户数据(姓名、公司、电话等)(其中每行为客户,每列为上述数据之一(姓名、公司等))。客户端的完整信息不仅显示在列表中,还显示在userform中的几个文本框中。您可以编辑/更改文本框中的客户端信息,这些信息保存在多数组中,然后放入列表框……。如果关系经理正在更改文本框中的某些客户端信息,然后点击列表框中的一个新客户端,我遇到了上面解释的问题。构建了(正确的)新数组并显然放入了列表框中(这不是VBA错误),但列表框(您最终实际看到的)没有更改,即您之前对客户端所做的更改是不可预料的。我没有添加“Option Explicit”,但声明了所有变量……(如果没有明确的变量定义,我想在所有其他情况下编辑客户数据(即列表框)时会出现错误。)谢谢,这是有道理的。“多重选择”实际上只是我的观察结果(我想这可能是问题的一部分).无论如何,是否有可能在事件中重新填充列表框(列表框\u单击)本身?代码没有给我一个错误,但不会将listbox更改为已修改的。arr_DataListBox来自何处?你确定它与listbox中当前的不同吗?此外,你应该在模块顶部添加显式选项并显式声明变量。也许我应该更多地讲述“故事”这里,我想这有助于并澄清。这个列表框以多维数组的形式显示客户数据(姓名、公司、电话等)(其中每一行是一个客户,每一列是上述(姓名、公司等)中的一个)。客户端的完整信息不仅显示在列表中,还显示在userform中的几个文本框中。您可以编辑/更改文本框中的客户端信息,这些信息保存在多数组中,然后放入列表框……。如果关系经理正在更改文本框中的某些客户端信息,然后点击列表框中的新客户端,我遇到了上面解释的问题