VBA(Visual Basic):组合框(窗体控件)-对象不';不支持此属性或方法

VBA(Visual Basic):组合框(窗体控件)-对象不';不支持此属性或方法,vba,excel,combobox,runtime-error,Vba,Excel,Combobox,Runtime Error,刚刚注册!(尽管我已经使用这个网站好几年了,哈哈!) 我在VBA上遇到了一个问题,这让我发疯。希望有人能解决我的问题 我试图引用我在Sheet6中手动添加的组合框(表单控件)。它包含多个项目列表。然后我将循环浏览组合框中的每个项目,并对其进行处理 然而,就我的一生而言,我无法理解我做错了什么 我一直收到一个运行时错误“438”: 谢谢您的帮助 亲切问候,, 忍者我想你应该用 Set ReferralSheetCBox = Worksheets(6).Shapes("ComboBox1")

刚刚注册!(尽管我已经使用这个网站好几年了,哈哈!)

我在VBA上遇到了一个问题,这让我发疯。希望有人能解决我的问题

我试图引用我在Sheet6中手动添加的组合框(表单控件)。它包含多个项目列表。然后我将循环浏览组合框中的每个项目,并对其进行处理

然而,就我的一生而言,我无法理解我做错了什么

我一直收到一个运行时错误“438”:

谢谢您的帮助

亲切问候,, 忍者

我想你应该用

Set ReferralSheetCBox = Worksheets(6).Shapes("ComboBox1")
然后,您可以通过其
ControlFormat
属性访问其属性,例如:

Dim nItems As Long
nItems = ReferralSheetCBox.ControlFormat.ListCount
因此,显示的代码最后一行是

For i = 0 To ReferralSheetCBox.ControlFormat.ListCount - 1

通过将
ReferralSheetCBox
强键入为
下拉列表
(这是包含组合框的隐藏类型),可以使用早期绑定:

然后将引用设置为形状的
DrawingObject

Set ReferralSheetCBox = Sheet6.Shapes("ComboBox1").DrawingObject
然后,您可以调整代码以适应:

For i = 0 To ReferralSheetCBox.ListCount - 1

您好,我已经声明了ControlFormat属性并开始使用它。这使我能够做我想做的事情!我不明白为什么我不能只做Sheet6.ComboBox1?我手动创建了组合框(它是表单控件,而不是ActiveX控件)。。我不明白为什么我必须使用ControlFormat属性而不是简单地执行Sheet6.ComboBox1?如果你能帮我理解,那就太好了。。我见过其他人只是做Sheet1.ComboBox1。。但我不能这么做?非常感谢BTW的解决方案。我必须承认我从来没有涉足这一点,只是接受了它……顺便说一下,你可以考虑把答案标记为“接受”。谢谢,我进行了快速搜索,可以说这一定与Excel表单控件是包含控件的形状对象这一事实有关。后者是通过ControlFormat属性访问的。另一方面,ActiveX控件本身就是一个控件,因此您可以直接访问控件属性和方法感谢您提供的信息和所有帮助,如果您有skype/discord,请告诉我,我可以为将来的任务进行头脑风暴!是的,它与ActiveX一起工作!然而,人们为什么使用OleObject属性,而不直接为ActiveX组合框使用Sheet1.ComboBox1,这仍然很奇怪。。也许以后我会看一看。此外,我认为我需要重新思考我的代码,并采用透视表方法——但通过组合框+表格方法,我遇到了一些障碍。我可能很快会问另一个问题,请注意!这似乎不起作用:(.我见过其他人使用组合框名称上的点运算符简单地获取组合框对象。Sheet1.ComboBox1..我不明白为什么我必须检查所有这些形状、下拉属性?非常感谢任何帮助..尽管ControlFormat属性解决方法对我的组合框很有效..请阅读上面的评论!您非常满意具体说明它是一个组合框(表单控件)。如果要使用点语法并避免形状,则需要使用组合框(ActiveX控件)相反。只有ActiveX控件作为工作表的属性公开。是的,我刚刚意识到,ActiveX控件允许直接使用工作表上的组合框6.combobox1。我被告知反之亦然。谢谢你的帮助!真的很感谢你的帮助。虽然我现在遇到了一些障碍,但我怀疑它是否有解决办法excel是如何构建的。因此,我可能需要使用Pivot表来实现我想要实现的目标。我可能会提出另一个问题,如果您能注意并回答,那太好了!将我添加到skype/discord上如果您不介意,可以与一些VBA朋友、联系人联系。谢谢您的帮助!
Set ReferralSheetCBox = Sheet6.Shapes("ComboBox1").DrawingObject
For i = 0 To ReferralSheetCBox.ListCount - 1