我試圖通過將列表框對象傳遞給子函數來填充列表框,但是每當我運行它時,我都會遇到類型不匹配錯誤。我將MAIN.BoxY1對象傳遞給函數FillListBox,其中MAIN是列表框所在工作表的代碼名稱,BoxY1是我的列表框名稱(ActiveX)。當我改變FillListBox函數爲每個實例包含MAIN.BoxY1而不是MyBox時,它將正常工作。將列表框傳遞給另一個函數的正確方法是什麼?VBA傳遞列表框到函數
Sub FillListBox(MyBox As ListBox, DataList As Variant)
MyBox.MultiSelect = 1
For j = 1 To NumOutputs
MyBox.AddItem DataList(j)
Next j
End Sub
Sub BoxY1_Fill()
FillListBox MAIN.BoxY1, TheData
End Sub
不是一個完美的解決方案,但您是否嘗試接受該參數作爲Object而不是Listbox? Sub FillListBox(MyBox作爲對象,DataList作爲變體)?另外,也許指定你通過引用而不是按值傳遞它? Sub FillListBox(ByRef MyBox as Object,DataList as variant)? – Acantud
確實有效;感謝您的建議,雖然我仍然不明白爲什麼ListBox對象沒有,但也許我會找出一天。 – teepee
很高興幫助 - 下面的答案看起來不錯,這是我不知道的信息 - 將有興趣看看是否修復它,我也遇到類似的問題 – Acantud