在单元格周围放置边框时出现运行时错误 1004
Runtime error 1004 when putting borders around cells
我试图在从某个单元格开始的列周围放置边框,但我收到的每个问题的错误代码都不同。
原码
Sub Borders()
With ThisWorkbook.Worksheets("Sheet1").Range("J16").UsedRange _
.Borders(xlEdgeBottom) _
.LineStyle = XlLineStyle.xlContinuous
End With
End Sub
上面的代码出现运行时错误438,因为我使用的对象或方法不正确,所以我尝试使用下面的代码来纠正它。
新代码
Sub Borders()
With ThisWorkbook.Worksheets("Sheet1")
LastRow = .Range("J16" & .Rows.Count).End(xlUp).Row _
.Borders(xlEdgeBottom) _
.LineStyle = XlLineStyle.xlContinuous
End With
End Sub
第二个代码出现了 1004 执行错误,这意味着我命名的范围不正确,但我不确定如何命名。
我想知道我能做些什么来解决这个问题?
谢谢,
With
语句只是为了避免多次输入相同的内容reference/object。
With ThisWorkbook.Worksheets("Sheet1")
LastRow = .Range("J" & .Rows.Count).End(xlUp).Row
.Range("J16:J" & LastRow).Borders(xlEdgeBottom).LineStyle = XlLineStyle.xlContinuous
End With
如果没有 With
,代码将如下所示:
LastRow = ThisWorkbook.Worksheets("Sheet1").Range("J" & ThisWorkbook.Worksheets("Sheet1").Rows.Count).End(xlUp).Row
ThisWorkbook.Worksheets("Sheet1").Range("J16:J" & LastRow).Borders(xlEdgeBottom).LineStyle = XlLineStyle.xlContinuous
两种代码的作用完全相同,但第一种代码更易于阅读和输入
使用 UsedRange 引用列范围
Sub ReferenceColumn()
Dim crg As Range
With ThisWorkbook.Worksheets("Sheet1").Range("J16")
' '.Resize(ws.Rows.Count - .Row + 1)' means 'J16:J1048576'
Set crg = Intersect(.Resize(ws.Rows.Count - .Row + 1), ws.UsedRange)
If crg Is Nothing Then Exit Sub
End With
crg.Borders(xlEdgeBottom).LineStyle = XlLineStyle.xlContinuous
End Sub
我试图在从某个单元格开始的列周围放置边框,但我收到的每个问题的错误代码都不同。
原码
Sub Borders()
With ThisWorkbook.Worksheets("Sheet1").Range("J16").UsedRange _
.Borders(xlEdgeBottom) _
.LineStyle = XlLineStyle.xlContinuous
End With
End Sub
上面的代码出现运行时错误438,因为我使用的对象或方法不正确,所以我尝试使用下面的代码来纠正它。
新代码
Sub Borders()
With ThisWorkbook.Worksheets("Sheet1")
LastRow = .Range("J16" & .Rows.Count).End(xlUp).Row _
.Borders(xlEdgeBottom) _
.LineStyle = XlLineStyle.xlContinuous
End With
End Sub
第二个代码出现了 1004 执行错误,这意味着我命名的范围不正确,但我不确定如何命名。
我想知道我能做些什么来解决这个问题?
谢谢,
With
语句只是为了避免多次输入相同的内容reference/object。
With ThisWorkbook.Worksheets("Sheet1")
LastRow = .Range("J" & .Rows.Count).End(xlUp).Row
.Range("J16:J" & LastRow).Borders(xlEdgeBottom).LineStyle = XlLineStyle.xlContinuous
End With
如果没有 With
,代码将如下所示:
LastRow = ThisWorkbook.Worksheets("Sheet1").Range("J" & ThisWorkbook.Worksheets("Sheet1").Rows.Count).End(xlUp).Row
ThisWorkbook.Worksheets("Sheet1").Range("J16:J" & LastRow).Borders(xlEdgeBottom).LineStyle = XlLineStyle.xlContinuous
两种代码的作用完全相同,但第一种代码更易于阅读和输入
使用 UsedRange 引用列范围
Sub ReferenceColumn()
Dim crg As Range
With ThisWorkbook.Worksheets("Sheet1").Range("J16")
' '.Resize(ws.Rows.Count - .Row + 1)' means 'J16:J1048576'
Set crg = Intersect(.Resize(ws.Rows.Count - .Row + 1), ws.UsedRange)
If crg Is Nothing Then Exit Sub
End With
crg.Borders(xlEdgeBottom).LineStyle = XlLineStyle.xlContinuous
End Sub