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

我一直在添加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

   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
给出了正确的地址。原始工作表未受保护。我将再次尝试查看它。