我在下面的VBA代码中添加了excel(MS Excel 2013)工作表打印页面的边框,但我得到的错误代码如下:“运行时错误'1004':应用程序定义或对象定义的错误”。调试突出显示了块引号中的行。我该如何解决这个问题?
Sub Create_Borders_Around_Pages()
Dim rngBorder As Range
Dim lngLastRow As Long
Dim lngLastCol As Long
Dim lngHPBreak As Long
Dim lngVPBreak As Long
Dim lngRow As Long
Dim lngCol As Long
Dim rngAC As Range
With ActiveSheet
Set rngAC = ActiveCell
lngLastRow = .UsedRange.Cells(.UsedRange.Rows.Count, 1).Row
lngLastCol = .UsedRange.Cells(1, .UsedRange.Columns.Count).Offset(1, 0).Column
.Cells(lngLastRow + 1, 1).Activate
lngRow = 1
For lngVPBreak = 1 To .VPageBreaks.Count
lngCol = 1
For lngHPBreak = 1 To .HPageBreaks.Count
Set rngBorder = .Range(.Cells(lngRow, lngCol), _
.Cells(.HPageBreaks(lngHPBreak).Location.Row - 1, .VPageBreaks(lngVPBreak).Location.Column - 1))
rngBorder.BorderAround xlContinuous, xlThick
lngRow = .HPageBreaks(lngHPBreak).Location.Row
Next
Set rngBorder = .Range(.Cells(lngRow, lngCol), .Cells(lngLastRow, .VPageBreaks(lngVPBreak).Location.Column - 1))
rngBorder.BorderAround xlContinuous, xlThick
lngCol = .VPageBreaks(lngVPBreak).Location.Column
Next
lngRow = 1
For lngHPBreak = 1 To .HPageBreaks.Count
设置rngBorder = .Range(.Cells(lngRow,lngCol),_ .Cells(.HPageBreaks(lngHPBreak).Location.Row - 1,lngLastCol))
rngBorder.BorderAround xlContinuous, xlThick
lngRow = .HPageBreaks(lngHPBreak).Location.Row
Next
Set rngBorder = .Range(.Cells(lngRow, lngCol), .Cells(lngLastRow, lngLastCol))
rngBorder.BorderAround xlContinuous, xlThick
rngAC.Activate
End With
End Sub
答案 0 :(得分:0)
除非工作表中没有VPageBreaks
,否则代码工作正常。
变量lngCol
仅在For lngVPBreak = 1 To .VPageBreaks.Count
循环中设置,因此如果没有vPageBreaks
,则它不会被设置。
因此,Set rngBorder
行在语句的.Cells(lngRow, lngCol)
部分失败,列值为0。
建议你在这个循环之外的地方设置lngCol = 1
吗?