使用Excel VBA时出现应用程序定义或对象定义错误

时间:2012-12-05 13:24:15

标签: vba excel-vba excel

当我运行下面的宏时,我得到“应用程序定义或对象定义的错误”。

我想解析“DB”表格中的每一列并搜索该列。

Sub test()  
Dim FindString As Range
Dim Rng As Range

Dim i, j As Integer
Dim finalcol As Long

Worksheets("DB").Select

finalcol = Worksheets("DB").Cells(1, Application.Columns.Count).End(x1toleft).column
On Error Resume Next

For i = 1 To finalcol
    FindString = Cells(1, i).Value

    If Trim(FindString) <> "" Then
        With Sheets("DB").Range("A:A")
            Set Rng = .Find(What:=FindString, _
                        After:=.Cells(.Cells.Count), _
                        LookIn:=xlValues, _
                        LookAt:=xlWhole, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlNext, _
                        MatchCase:=False)
            If Not Rng Is Nothing Then
                Application.Goto Rng, True
            Else
                MsgBox "Nothing found"
            End If
        End With
    End If
Next i
On Error GoTo 0

End Sub

1 个答案:

答案 0 :(得分:4)

您的x1toleft常量应为xlToLeft(例如,不是前一个)。它没有转换成驼峰的事实是一个提示。

此外,FindString应该是Dim FindString As String而不是Range。如果你摆脱On Error Resume Next行,你会在FindString = Cells(1,i).Value行上出错,因为你必须使用Set对象变量。当它运行并且错误被抑制时,FindString(作为Range变量)是Nothing。

我没有得到你得到的错误,它找不到任何东西。但是,如果您进行这些更改,它将修复它或暴露真正的错误。在任何情况下,您应该在调试之前删除错误处理,然后将其添加回来。