我正在尝试编写一个宏,该宏将查找,激活和循环遍历外部有寄宿生的任何单元。当我使用find函数并且记录了以下代码时,它可以工作,但是当我独立运行此代码时,它会在返回
之前挂在find部分上。运行时错误“ 91”。
有什么想法为什么记录不能像标准查找格式那样工作?
Sub FindBoarder()
'
' FindBoarder Macro
'
'
Application.FindFormat.Clear
With Application.FindFormat.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Application.FindFormat.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Application.FindFormat.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Application.FindFormat.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
Cells.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=True).Activate
Cells.FindNext(After:=ActiveCell).Activate
End Sub
答案 0 :(得分:0)
其他人指出了问题所在,但是如果您需要从那里获得解决方案的帮助,请执行以下操作:
Dim ToActivate As Range
Set ToActivate = Cells.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=True)
If Not ToActivate Is Nothing Then
ToActivate.Activate
Else
Debug.Print "Not Found"
End If
上面的代码替换了您的Cells.Find
调用。尽管我真的不确定这两个调用之间的关系应该是什么,但您还是想对FindNext
进行类似的操作。
答案 1 :(得分:-1)
我试图重复您的脚本,但令人惊讶的是,当进行格式化时,它可以工作。仅当没有带边框的单元格时才会发生该错误。摆脱它的简单(但不正确)方法是在该行的开头添加:
错误恢复下一个
然后此宏将用作“标签”按钮)