Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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如何确定在列表框中选择了哪一行?_Excel_Vba - Fatal编程技术网

Excel VBA如何确定在列表框中选择了哪一行?

Excel VBA如何确定在列表框中选择了哪一行?,excel,vba,Excel,Vba,如何确定在列表框中选择了哪一行?我在这里问这个问题是因为,到目前为止,我所发现的所有内容都需要在所有行中循环检查是否选中,但我想知道是否存在一些简单的内容,因为我使用的是modeMultiSelect 0-fmMultiSelectSingle只需要一个整数…如果使用ListFillRange属性填充列表框,或以其他方式使用连续的工作表区域,列表框中的第三项将来自该区域中第三个单元格的行 R = Range(ListFillRange).Rows([Listindex]).Row 其中[Lis

如何确定在
列表框中选择了哪一行?我在这里问这个问题是因为,到目前为止,我所发现的所有内容都需要在所有行中循环检查是否选中,但我想知道是否存在一些简单的内容,因为我使用的是mode
MultiSelect 0-fmMultiSelectSingle
只需要一个整数…

如果使用
ListFillRange
属性填充列表框,或以其他方式使用连续的工作表区域,列表框中的第三项将来自该区域中第三个单元格的行

R = Range(ListFillRange).Rows([Listindex]).Row
其中[Listindex]是所选列表框项目的Listindex

如果这种简单的方法不可用,f.i.因为列表是使用过滤器创建的,那么要做的事情是创建一个多栏列表框,其中包含一个额外的隐藏列,并在创建列表时记录其中的行号


仅当列表框中的项目没有首先从工作表中提取时,才需要循环,这就是为什么这样做不是创建列表框列表的最佳解决方案的原因。

如果使用
ListFillRange
属性填充列表框,或者使用连续的工作表范围,列表框中的第三项将来自范围中第三个单元格的行

R = Range(ListFillRange).Rows([Listindex]).Row
其中[Listindex]是所选列表框项目的Listindex

如果这种简单的方法不可用,f.i.因为列表是使用过滤器创建的,那么要做的事情是创建一个多栏列表框,其中包含一个额外的隐藏列,并在创建列表时记录其中的行号


仅当列表框中的项目最初未从工作表中提取时,才需要循环,这就是为什么这样做不是创建列表框列表的最佳解决方案的原因。

如果您禁用了multiselect,则只需获取
列表框.value
。只有当“multiselect”处于启用状态时,您才必须循环。谢谢您的解释非常有用
Listbox1.Value
将为您提供值,
Listbox1.ListIndex+1
将为您提供所选行<代码>如果Listbox1.ListIndex-1,则MsgBox“Selected row=“&Listbox1.ListIndex+1否则MsgBox“Nothing Selected”
如果禁用了multiselect,则只需获取
列表框.value
。只有当“multiselect”处于启用状态时,您才必须循环。谢谢您的解释非常有用
Listbox1.Value
将为您提供值,
Listbox1.ListIndex+1
将为您提供所选行<代码>如果Listbox1.ListIndex为-1,则MsgBox“Selected row=“&Listbox1.ListIndex+1,否则MsgBox“Nothing Selected”