从多选列表框中检索数据时允许空input

我正在尝试创build一个简单的基于工作表的表单,该表单将从select中将数据导入Excel工作簿中的另一个工作表。 这是我第一次搞乱Visual Basic和ActiveX控件,而且我没有太多的编程经验,但是有很多Googlesearch,到目前为止我已经成功了。

有问题的部分:我有几个多选框,点击一个button,将数据推送到电子表格中,使用下面的代码:

Private Sub CommandButton1_Click() Dim I As Long Range("A10").Select Range(Selection, Selection.End(xlToRight)).ClearContents With Me.ListBox1 For I = 0 To .ListCount - 1 If .Selected(I) Then Flg= True txt = txt & "," & .List(I) End If Next End With If Flg Then With Sheets("Sheet1") .Range("A10").Value = Mid$(txt, 2) End With End If txt="" 'Repeat for each listbox' End Sub 

只要用户在每个列表框中至lessselect了一个项目,就可以很好地将数据提取出来,从那里我可以做我所需要的。 但我不想要求用户点击每个框(也就是说,我想我可以强制他们点击一个空的select,如果他们不想在该框中select的东西,但它会更容易让他们不要select任何东西)。 但是(可以理解)当在给定的框中没有select任何东西时,我上面粘贴的代码返回运行时错误1004:没有select数据parsing。

我怎样才能允许用户在一个框中不做select,并且在检索数据时让代码将相关单元留空?

哇,几天后我终于find了。 这是我工作的代码:

 Private Sub ListBox1_LostFocus() Dim listItems As String, i As Long With ListBox1 For i = 0 To .ListCount - 1 If .Selected(i) Then listItems = listItems & .List(i) & ", " Next i End With If Len(listItems) > 0 Then Range("A2") = Left(listItems, Len(listItems) - 2) Else Range("A2") = "" End If End Sub 

它来自这个网页: https : //www.mrexcel.com/forum/excel-questions/584437-write-selections-excel-listbox-cell.html …感谢“Marcelo Branco”提供的答案7多年前!

编辑 – 这真的回答了我有一个单独的问题(关于自动检索数据),但它似乎也适用于这里的大问题,因为当没有select什么,目标单元格是空白的。