Excel 2007 VBA ActiveX组合框添加424错误
我一直在添加ActiveX组件。我在Excel 2007中使用VBA添加ActiveX组合框时收到错误代码424。 我希望这里的人会这么好,帮我做这件事Excel 2007 VBA ActiveX组合框添加424错误,vba,excel,combobox,Vba,Excel,Combobox,我一直在添加ActiveX组件。我在Excel 2007中使用VBA添加ActiveX组合框时收到错误代码424。 我希望这里的人会这么好,帮我做这件事 Sub addComboBx() Dim countColl As Double Dim cbx_name As String Dim objChBx As OLEObject Dim comboBx As ComboBox Dim rng As Range Dim rowNr As Double r
Sub addComboBx()
Dim countColl As Double
Dim cbx_name As String
Dim objChBx As OLEObject
Dim comboBx As ComboBox
Dim rng As Range
Dim rowNr As Double
rowNr = 27
lastRow = 115
LastRange = "B2: F" & lastRow
arrayCountry = Worksheets("Sheet 1").Range(LastRange).Value
countColl = countRows(rowNr) 'Sub that counts rows from line X untill the value of checked cell in next row is equal "" (empty string)
Worksheets("Sheet 2").Cells((rowNr + countColl), 1).EntireRow.Insert
cbx_name = "Cbx_countries_list_" & (countColl + 1)
Set rng = Worksheets("Sheet 2").Cells((rowNr + countColl), 3)
'-> In line below I have Error 424 'Object required'
With Worksheets("Sheet 2").OLEObjects.Add(ClassType:="Forms.ComboBox.1", link:=False, DisplayAsIcon:=False, Left:=rng.Left, Top:=rng.Top, Width:=rng.Width, Height:=rng.Height)
With .Object
For a = LBound(arrayCountry) To UBound(arrayCountry)
.AddItem arrayCountry(a, 1)
Next a
End With
Set comboBx = .Object
With comboBx
.Value = Sheets("Sheet 2").Cbx_countries_list.Value
.Placement = xlMove
.PrintObject = True
.Name = cbx_name
End With
End With
End Sub
我不明白,为什么我有这个424错误。我查看了这个论坛和其他论坛,没有找到解决方案
以下是发生错误的行:
With Worksheets("Sheet 2").OLEObjects.Add(ClassType:="Forms.ComboBox.1", link:=False, DisplayAsIcon:=False, Left:=rng.Left, Top:=rng.Top, Width:=rng.Width, Height:=rng.Height)
我不知道这是否重要。上面的代码在单独的模块中,而不是在工作表中,因为它是在单击按钮后调用的您是否尝试过调试?错误发生在哪一行?这是再现错误所需的最小代码量吗?如果没有,您应该尝试减少代码,直到错误消失-这告诉您发生错误的实际原因。我正在运行您的代码,没有任何错误(经过一些小的修改,因为我没有
工作表(“工作表2”).Cbx\u countries\u list.Value
。您能告诉我们您在哪一行得到错误吗?错误显示在创建OLEObject的行中:带有工作表(“表2”).OLEObjects.Add(类类型:=“Forms.ComboBox.1”,链接:=False,DisplayAsIcon:=False,Left:=rng.Left,Top:=rng.Top,Width:=rng.Height)将您的代码复制到一个空文件中,然后自己测试。它可以正常工作。但是,它只在第一次运行时有效。在第二次运行时,.Name
将失败,因为它被复制,并且一张工作表上不能有两个同名的组合框。因此,问题一定在您的工作表中。因此,我们只能猜测。您的工作表可能是pr注意?也许还可以在代码中添加一个Debug.Print rng.Address
,以验证是否可以在该位置创建组合框?@Ralph,@Grade'Eh'Bacon我将代码移到新工作簿中,并注释掉第一个中的所有内容,以括号结尾。此外,我还复制了countRows
函数和函数的代码>工作表(“表1”)
现在,我在同一行中遇到了错误1004…看起来定义范围有问题,但Debug.Print rng.Address
给出了正确的地址。原始工作表未受保护。我将再次尝试查看它。您是否尝试过调试?在哪一行出现错误?这是重现该工作表所需的最小代码量吗e错误?如果没有,您应该尝试减少代码,直到错误消失-这告诉您发生错误的实际原因。我正在运行您的代码,没有任何错误(经过一些小的修改,因为我没有工作表(“工作表2”).Cbx\u countries\u list.Value
。您能告诉我们您在哪一行得到错误吗?错误显示在创建OLEObject的行中:带有工作表(“表2”).OLEObjects.Add(类类型:=“Forms.ComboBox.1”,链接:=False,DisplayAsIcon:=False,Left:=rng.Left,Top:=rng.Top,Width:=rng.Height)将您的代码复制到一个空文件中,然后自己测试。它可以正常工作。但是,它只在第一次运行时有效。在第二次运行时,.Name
将失败,因为它被复制,并且一张工作表上不能有两个同名的组合框。因此,问题一定在您的工作表中。因此,我们只能猜测。您的工作表可能是pr注意?也许还可以在代码中添加一个Debug.Print rng.Address
,以验证是否可以在该位置创建组合框?@Ralph,@Grade'Eh'Bacon我将代码移到新工作簿中,并注释掉第一个中的所有内容,以括号结尾。此外,我还复制了countRows
函数和函数的代码>工作表(“工作表1”)
现在我在同一行中遇到了错误1004…看起来定义范围有问题,但Debug.Print rng.Address
给出了正确的地址。原始工作表未受保护。我将再次尝试查看它。