2016-11-16 107 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