VBA查找格式化的单元格

时间:2018-06-21 17:20:54

标签: excel vba excel-vba find

我正在尝试编写一个宏,该宏将查找,激活和循环遍历外部有寄宿生的任何单元。当我使用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

2 个答案:

答案 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)

我试图重复您的脚本,但令人惊讶的是,当进行格式化时,它可以工作。仅当没有带边框的单元格时才会发生该错误。摆脱它的简单(但不正确)方法是在该行的开头添加:

错误恢复下一个

然后此宏将用作“标签”按钮)