Excel UDF检测分页符?

时间:2011-01-13 13:01:34

标签: excel vba excel-2003

我正在尝试编写一个UDF,它返回单元格是否处于分页符。

到目前为止,我有这个:

Function pbreak() As Boolean
   ' Application.Volatile
    pbreak = False
    Dim ra As Range
    Set ra = Application.Caller
    With ra
        For i = 1 To .Worksheet.HPageBreaks.Count
            If .Worksheet.HPageBreaks(i).Location.Row = .Row Then
                pbreak = True

            End If
        Next
    End With
End Function

这会返回#VALUE错误。我已经尝试过调试它,HPageBreaks.Count返回3(并且有3个分页符),但HPageBreaks(i)会产生一个“索引超出范围” - 对于低于当前单元格的所有分页符错误。 / p>

这是一个错误(即.Count是错误的),还是有一些我缺少分页符的特殊行为?

有没有办法解决这个问题(最好不要诉诸on error resume next)?

由于 马丁

1 个答案:

答案 0 :(得分:1)

Option Explicit

Function pbreak() As Boolean
   ' Application.Volatile
    Dim i As Integer   'the missing line
    pbreak = False
    Dim ra As Range
    Set ra = Application.Caller
    With ra
        For i = 1 To .Worksheet.HPageBreaks.Count
            If .Worksheet.HPageBreaks(i).Location.Row <= .Row Then
                If .Worksheet.HPageBreaks(i).Location.Row = .Row Then
                    pbreak = True
                    'exit the function once a page break is found.
                    Exit Function
                End If
            Else
                Exit Function
            End If
        Next
    End With
End Function

编辑:始终使用Option Explicit&amp;在使用之前编译代码。
在循环中使用Exit Function是为了防止代码在结果已知后进一步运行。