错误运行时91和429

时间:2015-10-12 17:35:00

标签: vba excel-vba runtime-error excel

这段代码感觉像薛定谔正在执行它。如果我打开项目并运行代码,我根本不会得到任何错误。如果我查看要编辑或添加任何内容的代码,那么在我第一次运行代码时,我会得到“运行时错误91'”。如果我尝试再次运行它,不进行任何更改,我会得到“运行时错误429”和“运行时错误429”。 (ActiveX组件无法创建对象)。

我想要实现的是在工作表(Ref)的范围内找到与在用户窗体(BuildList)的列表中选择的值相同的值的行(BuildSel)。然后,一旦找到该行,就从该行和A列和B列中获取数据,并将它们放在我的用户表单的文本框中。我的代码是否正确,ActiveX是否出错?我也为可怕的编码道歉。

编辑:列表框在我的用户表单上是多页的。我今天第一次注意到这个问题,当时我尝试在另一个页面上添加另一个列表框。

Private Sub BuildList_Click()
    Dim Ref As Worksheet, BuildSel As Long

    Set Ref = ThisWorkbook.Sheets("Ref")

    BuildSel = Ref.Range("B2", Ref.Range("B" & Rows.Count).End(xlUp)).Find(BuildList.Value, lookat:=xlPart).Row
    BuilderText.Value = Ref.Range("A" & BuildSel).Value
    CompNameText.Value = Ref.Range("B" & BuildSel).Value
End Sub

1 个答案:

答案 0 :(得分:0)

不确定为什么要改变BuildSel'变量使它工作,但当没有找到匹配的列表项时,它所代表的代码没有错误检查

以下代码应该更适合使用:

Private Sub BuildList_Click()
    Dim Ref As Worksheet: Set Ref = ThisWorkbook.Sheets("Ref")
    Dim BuildSel As Range
    With Ref
        Set BuildSel = .Range("B2", .Range("B" & Rows.Count).End(xlUp)).Find _
            (BuildList.Value, lookat:=xlPart)
        If Not BuildSel Is Nothing Then
            BuilderText.Value = .Range("A" & BuildSel.Row).Value
            CompNameText.Value = .Range("B" & BuildSel.Row).Value
        Else
            BuilderText.Value = ""
            CompNameText.Value = ""
        End If
    End With
End Sub