学习一些VBA。到目前为止,我已经构建了这段代码,这些代码应该允许我(尽管它还没有)执行以下操作:
"M" & i
单元格中的数字(在第一次迭代中为M5)。PutHereIfFound
的值设置为与F6的值相同(因此为偏移量)。它返回Run-Time Error 91
,代表Object Variable or With Variable not set
。当我调试时,它指向Set PuthereIfFound
行。
这个错误的原因是什么?
Sub FindThis()
Dim FindThis As Range
Dim PutHereIfFound As Range
Dim i As Integer
Dim f As Integer
i = 5
f = 5
Do
Set FindThis = ActiveSheet.Range("M" & i)
Set PutHereIfFound = ActiveSheet.Range("N" & i)
With ActiveSheet.Range("A:A")
Set PutHereIfFound = .Find(What:=FindThis, _
After:=.Cells(.Cells.Count), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False).Offset(0, 5)
If Not PutHereIfFound Is Nothing Then
i = i + 1
Else
i = i
End If
End With
Loop While i <= 20
End Sub
答案 0 :(得分:0)
根据我的评论,您的代码可以像这样进行优化。
Sub FindThis()
Dim ws As Worksheet
Dim FindThis As String
Dim aCell As Range
Dim i As Long
Set ws = Sheets("Sheet1")
With ws
For i = 5 To 20
FindThis = .Range("M" & i).Value
Set aCell = .Columns(1).Find(What:=FindThis, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not aCell Is Nothing Then
'~~> Do whatever you want here with the F Value
PutHereIfFound = aCell.Offset(, 5).Value
Debug.Print PutHereIfFound
End If
Next i
End With
End Sub
答案 1 :(得分:0)
在回答有关Object Variable or With Variable Not Set
错误的问题时,表示找不到FindThis
且Find
返回Nothing
。