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

使用Excel VBA时出现应用程序定义或对象定义错误,vba,excel,Vba,Excel,运行下面的宏时,出现应用程序定义或对象定义错误 我想分析数据库工作表中的每一列并搜索该列 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).colum

运行下面的宏时,出现应用程序定义或对象定义错误

我想分析数据库工作表中的每一列并搜索该列

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
您的x1toleft常量应该是xlToLeft-ex-ell,而不是ex-one。事实上,它没有转换为驼峰案例是一个提示

此外,FindString应该作为字符串而不是范围变暗FindString。如果您在下一行中删除了On Error Resume,那么FindString=Cells1,i.Value行将出现错误,因为您必须将Set与对象变量一起使用。当它运行并且错误被抑制时,作为范围变量的FindString是无效的

我没有发现你的错误,只是找不到任何东西。但是,如果您进行了这些更改,它将要么修复它,要么暴露真正的错误。在任何情况下,您都应该删除错误处理,直到对其进行调试,然后再将其添加回去。

您的x1toleft常量应该是xlToLeft-ex-ell,而不是ex-one。事实上,它没有转换为驼峰案例是一个提示

此外,FindString应该作为字符串而不是范围变暗FindString。如果您在下一行中删除了On Error Resume,那么FindString=Cells1,i.Value行将出现错误,因为您必须将Set与对象变量一起使用。当它运行并且错误被抑制时,作为范围变量的FindString是无效的

我没有发现你的错误,只是找不到任何东西。但是,如果您进行了这些更改,它将要么修复它,要么暴露真正的错误。在任何情况下,您都应该删除错误处理,直到对其进行调试,然后再重新添加