VBA(Visual Basic):ComboBox(表单控件) - 对象不支持此属性或方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA(Visual Basic):ComboBox(表单控件) - 对象不支持此属性或方法相关的知识,希望对你有一定的参考价值。

刚刚注册! (即使我已经使用该网站几年了哈哈!)。

我在VBA上遇到了问题,它让我发疯了。希望有人可以解决我的问题。

我试图引用我在Sheet6中手动添加的ComboBox(表单控件)。它包含几个项目列表。然后我将循环遍历组合框中的每个项目并用它做一些事情。

然而,对于我的生活,我无法理解我做错了什么?!

我一直得到运行时错误'438':

Object doesn't support this property or method

This is the line the Run-time error occurs on:

Public Sub ReferralSummaries()

'Stop screen updates.
Application.ScreenUpdating = False

'Method Variables
Dim Lstrw As Long
Dim CurrentWb As Workbook
Dim ReferralSheet As Worksheet
Dim ResultsSheet As Worksheet
Dim ReferralSheetCBox As Object

'Initialize Variables
Set CurrentWb = ThisWorkbook
Set ReferralSheet = CurrentWb.Sheets("Referral Breakdowns")
Set ResultsSheet = CurrentWb.Sheets("Results")
Set ReferralSheetCBox = Worksheets(6)

'Check Date column and update accordingly
Call Update_Date_Column(ReferralSheet, ResultsSheet)

For i = 0 To ReferralSheetCBox.ComboBox1.Items.Count - 1 **(ERROR TRIGGERED HERE).**

敬请原谅!

亲切的问候,忍者

答案

我想你应该用

Set ReferralSheetCBox = Worksheets(6).Shapes("ComboBox1")

然后,您可以通过其ControlFormat属性访问其属性,例如:

Dim nItems As Long
nItems = ReferralSheetCBox.ControlFormat.ListCount

因此,您显示的代码最后一行将是

For i = 0 To ReferralSheetCBox.ControlFormat.ListCount - 1
另一答案

您可以通过强类型ReferralSheetCBox作为DropDown(这是一个包含ComboBox的隐藏类型)来使用早期绑定:

Dim ReferralSheetCBox As Excel.DropDown

然后设置对形状的DrawingObject的引用:

Set ReferralSheetCBox = Sheet6.Shapes("ComboBox1").DrawingObject

然后,您可以将代码调整为:

For i = 0 To ReferralSheetCBox.ListCount - 1

以上是关于VBA(Visual Basic):ComboBox(表单控件) - 对象不支持此属性或方法的主要内容,如果未能解决你的问题,请参考以下文章

已删除的部件:部件/xl/vbaProject.bin。(Visual Basic for Applications(VBA))

对 Visual Basic 版本感到困惑

用EXCEL内嵌的Visual Basic for Application 编程,通过 USB-GPIB 控制器来驱动仪器34401A,并从34401A读取数据

[vba basic]法语名称转换V1

[vba basic]法语名称转换V1

[vba basic]画面上的后退