2014-02-04 2 views
1

Вот что мне нужно сделать. Выберите диапазон ячеек на основе номеров строк и столбцов. Поскольку он является динамическим, я должен использовать номера строк и столбцов. Я жестко закодировал их здесь в качестве примера. Как только у меня будет диапазон, мне нужно применить широкую границу вокруг него. Я могу выбрать диапазон. Любая помощь будет принята с благодарностью. Я включил часть кода выбора. Я указал, где он терпит неудачу.Выбор диапазона для применения границ - Доступ к 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 

ответ

2

Там нет необходимости использовать выберите:

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, доступа не знают о постоянныхxlEdgeLeft и т.д., пока вы не добавите ссылку на библиотеку объектов Microsoft Excel в Инструменты-> Ссылки. Вы также можете изменить этот константу на свои фактические значения без добавления ссылки на библиотеку, как в моем коде выше, но это сделает ваш код менее ясным.

+0

Я получаю определённую или определяемую объектами ошибку при использовании rng.Borders (xlEdgeLeft) Вы видите что-то не так с моими определениями переменных? – rajeev

+0

try now..access не знает о константах 'xlEdgeLeft' и т. Д., Пока вы не добавите ссылку на' microsoft excel object library' в _tools-> references_. Но вы можете изменить этот константу на свои значения, как в моем обновленном ответе, не добавляя ссылки на библиотеку. –

+1

Спасибо тонну !! Это сработало. – rajeev

Смежные вопросы