Выбор диапазона для применения границ - Доступ к VBA

Вот что мне нужно сделать. Выберите диапазон ячеек на основе номеров строк и столбцов. Поскольку он является динамическим, я должен использовать номера строк и столбцов. Я жестко закодировал их здесь в качестве примера. Как только у меня будет диапазон, мне нужно применить широкую границу вокруг него. Я могу выбрать диапазон. Любая помощь будет принята с благодарностью. Я включил часть кода выбора. Я указал, где он терпит неудачу.

Sub setBorder()

Dim xlApp As Object
Dim wb As Object
Dim ws As Object
Dim rng As Object
Dim startRow As Integer, startCol As Integer
Dim endRow As Integer, endCol As Integer

Set xlApp = CreateObject("Excel.Application")
xlApp.DisplayAlerts = False

Set wb = xlApp.Workbooks.Open("H:\Documents\Misc-Work\BU\test.xlsx")

startRow = 6
startCol = 5
endRow = 15
endCol = 5

Set ws = wb.worksheets(1)

With ws
 Set rng = .Range(.Cells(startRow, startCol), .Cells(endRow, endCol))
 rng.select -- It fails here
End With

'rng.select

With Selection.Borders(xlEdgeLeft)
 .LineStyle = xlContinuous
 .ColorIndex = 0
 .TintAndShade = 0
 .Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
 .LineStyle = xlContinuous
 .ColorIndex = 0
 .TintAndShade = 0
 .Weight = xlThin
End With
End Sub
1 ответ

Нет необходимости использовать select:

With ws
 Set rng = .Range(.Cells(startRow, startCol), .Cells(endRow, endCol))
End With

With rng.Borders(7)
 .LineStyle = 1
 .ColorIndex = 0
 .TintAndShade = 0
 .Weight = 2
End With
With rng.Borders(8)
 .LineStyle = 1
 .ColorIndex = 0
 .TintAndShade = 0
 .Weight = 2
End With

Btw, Access не знает о константах xlEdgeLeft и т.д., xlEdgeLeft вы не добавите ссылку на библиотеку объектов Microsoft Excel в Tools-> Ссылки. Вы также можете изменить этот константу на свои фактические значения без добавления ссылки на библиотеку, как в моем коде выше, но это сделает ваш код менее ясным.

licensed under cc by-sa 3.0 with attribution.