在单元格周围放置边框时出现运行时错误 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

两种代码的作用完全相同,但第一种代码更易于阅读和输入

With statement

使用 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