Excel VBA:反复添加外部边界

我需要添加外部边界到多个工作表中的一些范围,所以我写了下面的testing代码(工作):

Sub TestFun() Dim wb As Workbook Dim ws As Worksheet Set wb = Workbooks("TestBook.xlsm") wb.Worksheets("Sheet1").Select Range("B2:D10").Select AddOutsideBorders wb.Worksheets("Sheet2").Select Range("B2:D10").Select AddOutsideBorders wb.Worksheets("Sheet3").Select Range("B2:D10").Select AddOutsideBorders End Sub Sub AddOutsideBorders() With Selection .Borders(xlEdgeLeft).LineStyle = xlContinuous .Borders(xlEdgeTop).LineStyle = xlContinuous .Borders(xlEdgeBottom).LineStyle = xlContinuous .Borders(xlEdgeRight).LineStyle = xlContinuous End With End Sub 

但是,我真正的工作簿包含更多的工作表,我需要执行更复杂的任务。 所以问题是, 如何在不select范围的情况下添加边框 ? 举个例子,我想要这样一个整洁的东西(它不起作用):

 Sub TestFun() Dim wb As Workbook Dim ws As Worksheet Set wb = Workbooks("TestBook.xlsm") wb.Worksheets("Sheet1").Range("B2:D10").AddOutsideBorders wb.Worksheets("Sheet2").Range("B2:D10").AddOutsideBorders wb.Worksheets("Sheet3").Range("B2:D10").AddOutsideBorders End Sub Sub AddOutsideBorders(rng As Range) With rng .Borders(xlEdgeLeft).LineStyle = xlContinuous .Borders(xlEdgeTop).LineStyle = xlContinuous .Borders(xlEdgeBottom).LineStyle = xlContinuous .Borders(xlEdgeRight).LineStyle = xlContinuous End With End Sub 

更一般地说,我如何调用在一个范围内定义的另一个函数?

你所尝试的方法几乎是有效的(对于避免select而言你也很好),你只是以一种不正确的方式调用过程。 相反,它应该被称为:

 Call AddOutsideBorders(wb.Worksheets("Sheet1").Range("B2:D10")) Call AddOutsideBorders(wb.Worksheets("Sheet2").Range("B2:D10")) Call AddOutsideBorders(wb.Worksheets("Sheet3").Range("B2:D10")) 

把AddOutsideBorders转换成这样的函数:

 Sub TestFunc() Dim wb As Workbook Set wb = Workbooks("TestBook.xlsm") AddOutsideBorders wb.Worksheets("Sheet1").Range("B2:D10") AddOutsideBorders wb.Worksheets("Sheet2").Range("B2:D10") AddOutsideBorders wb.Worksheets("Sheet3").Range("B2:D10") End Sub Public Function AddOutsideBorders(rng As Range) With rng .Borders(xlEdgeLeft).LineStyle = xlContinuous .Borders(xlEdgeTop).LineStyle = xlContinuous .Borders(xlEdgeBottom).LineStyle = xlContinuous .Borders(xlEdgeRight).LineStyle = xlContinuous End With End Function