gpt4 book ai didi

VBA 将列表框传递给函数

转载 作者:行者123 更新时间:2023-12-04 19:51:34 25 4
gpt4 key购买 nike

我试图通过将我的列表框对象传递给子函数来填充列表框,但每当我运行它时,我都会收到类型不匹配错误。我将对象 MAIN.BoxY1 传递给函数 FillListBox,其中 MAIN 是列表框所在工作表的代号,BoxY1 是我的列表框名称 (ActiveX)。当我更改 FillListBox 函数以在每个实例中包含 MAIN.BoxY1 而不是 MyBox 时,它将正常工作。将列表框传递给另一个函数的正确方法是什么?

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

最佳答案

Excel 中有两种类型的列表框:“内置”类型和 ActiveX 版本。根据您处理的类型,您需要以不同方式设置函数参数:

Sub Testing()
test1 Sheet1.ListBox1 ' <<ActiveX Listbox
test2 Sheet1.ListBoxes("ListBox2") ' <<Forms Listbox
test2 Sheet1.Shapes("ListBox2").OLEFormat.Object ' <<Forms Listbox (avoiding
' deprecated 'Listboxes')
End Sub

'ActiveX listbox
Function test1(lb As msforms.ListBox)
Debug.Print lb.ListCount
End Function

'Forms listbox
Function test2(lb As ListBox)
Debug.Print lb.ListCount
End Function

关于VBA 将列表框传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22765039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com