Excel中的列表框-如何确定未选择

时间:2019-01-27 03:57:26

标签: excel vba

我有一个Excel电子表格,在sheet1上有一个列表框,该列表框是从sheet2上的一个命名组填充的。此命名组中有4个条目。

我希望用户在执行任何其他操作之前从此列表框(1列)中进行选择。我正在尝试编写代码以检查列表框中的有效选择,但是TopIndex = 0,并且.Value,.Selection,.Selected不起作用或它们返回0,但0是索引中第一个条目的索引列表框,就像我总是在做选择一样。

如果我检查Listbox.value <>“”,则无论是否进行选择,它都会返回null。

我整夜都在互联网上寻找解决方案,并空手而归。

我被困住了。寻找建议。

3 个答案:

答案 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。

感谢您的回复!