2016-11-16 103 views
0

我已经创建了一个函数带两个列表框,从一个列表框中取一个值并将该值添加到另一个列表框中。我将这个功能放在我的模块中。这里是 的代码。带有列表框的调用函数

下面是函数:

Function addtolist(selectionlist As ListBox, listselected As ListBox) 

For i = 0 To selectionlist.ListCount - 1 
    If selectionlist.selected(i) = True Then 
     listselected.AddItem selectionlist.List(i) 

    End If 

Next i 

For i = selectionlist.ListCount - 1 To 0 Step -1 
    If selectionlist.selected(i) = True Then 
     selectionlist.RemoveItem i 

    End If 

Next i 
End Function 

在私营子,点击一个按钮,我做了以下内容:

Call addtolist(selectionlist, listselected) 

我不断收到运行时错误“13”类型不匹配。

请帮忙!

+0

哪行触发错误? –

+0

呼叫addtolist(选择列表,选择列表)行突出显示。我只需要在开始时添加MSForms。 – KeatonYoung

回答

0

从代码和你暴露错误,我会说,你必须改变你的函数参数的声明键入MSForms.ListBox

Function addtolist(selectionlist As MSForms.ListBox, listselected As MSForms.ListBox) 
+0

这解决了这个问题。回想一下,我在网上看到了这个例子,但它并没有突出,我也没有尝试过。谢谢!顺便说一下,为什么我需要声明MSForms?是什么让我必须这样做? – KeatonYoung

+0

不客气。这些链接([link1](http://wellsr.com/vba/2016/excel/complete-guide-to-excel-vba-form-control-listboxes/),[link2](https://social.msdn .microsoft.com/Forums/zh-CN/2519bdf4-e516-4c02-80f7-b5364e6ee0e6/quirk-in-passing-a-combobox-and-listbox-as-a-parameter?forum = exceldev))可以帮助你了解差异。最后,因为我解决了你的问题,你可能希望将答案标记为已接受。谢谢! – user3598756