当我运行下面的宏时,我得到“应用程序定义或对象定义的错误”。
我想解析“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
答案 0 :(得分:4)
您的x1toleft
常量应为xlToLeft
(例如,不是前一个)。它没有转换成驼峰的事实是一个提示。
此外,FindString应该是Dim FindString As String
而不是Range。如果你摆脱On Error Resume Next
行,你会在FindString = Cells(1,i).Value
行上出错,因为你必须使用Set
对象变量。当它运行并且错误被抑制时,FindString(作为Range变量)是Nothing。
我没有得到你得到的错误,它找不到任何东西。但是,如果您进行这些更改,它将修复它或暴露真正的错误。在任何情况下,您应该在调试之前删除错误处理,然后将其添加回来。