我有一个Excel电子表格,在sheet1上有一个列表框,该列表框是从sheet2上的一个命名组填充的。此命名组中有4个条目。
我希望用户在执行任何其他操作之前从此列表框(1列)中进行选择。我正在尝试编写代码以检查列表框中的有效选择,但是TopIndex = 0,并且.Value,.Selection,.Selected不起作用或它们返回0,但0是索引中第一个条目的索引列表框,就像我总是在做选择一样。
如果我检查Listbox.value <>“”,则无论是否进行选择,它都会返回null。
我整夜都在互联网上寻找解决方案,并空手而归。
我被困住了。寻找建议。
答案 0 :(得分:0)
您是否尝试过以下属性:列表框的ListIndex?如果未选择则返回-1。
请看一下这个演示,在这里我演示如何使用Excel数据加载到用户窗体内的列表框中来执行基本操作(创建,读取,更新,删除)。
也许您可以对其进行调整以满足您的需求。这不是理想的解决方案(例如,缺少错误处理和重复的代码),但应该为您指明正确的方向。
访问此github存储库并下载xlsm文件:
https://github.com/rdiazjimenez/excel-vba-userform-basic-listbox-demo
如果有帮助,请标记此答案。
答案 1 :(得分:0)
您可能正在寻找这段代码
If ListBox1.ListIndex = -1 Then
MsgBox "Nothing selected"
Else
MsgBox "Selected: " & ListBox1.ListIndex
End If
如果在列表框中未选择任何内容,则Listindex等于-1。否则,它是所选元素的索引,从0开始。
上面的代码适用于multiselect为false的列表框。
对于在这段代码上具有“多选”功能的列表框,可能会帮助您
Dim i As Long
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
MsgBox "Selected: " & i
End If
Next i
答案 2 :(得分:0)
不知道为什么它对我不起作用,但是当我使用
listbox1.listindex I kept getting 0
因此,我通过使用
更改了填充列表框的方式私人子工作簿_Open() '将网站名称添加到列表框 与Sheet1.ListBox1 .AddItem“ Hayward” .AddItem“ Exeland” .AddItem“ StoneLake” .AddItem“冬天” 结束于 结束
后来,当我编码定义需要打开的文件时,我使用了
x = Sheet1.ListBox1.ListIndex
Select Case x
Case 0
sSite = "Hayward"
Case 1
sSite = "Exeland"
Case 2
sSite = "StoneLake"
Case 3
sSite = "Winter"
Case Else
MsgBox "You MUST select a Site Location", vbOKOnly
GetTargetFile = "NoSite"
Exit Function
End Select
GetTargetFile = sSite & sMonth & Yr & ".xlsx"
现在,如果没有选择,Listbox1.ListIndex将返回-1。
我认为我最初的问题在于我试图填充列表框的方式,无论我做什么,FIRST和NO SELECTION都返回0。
感谢您的回复!