我正在尝试编写一个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
)?
由于 马丁
答案 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
是为了防止代码在结果已知后进一步运行。