Я перерабатываю код на старом листе, чтобы обновить его и сделать его более эффективным.Диапазон настройки диапазона ошибок в VBA с использованием диапазона (ячеек, ячеек)
У меня есть подпрограмма, которая форматирует таблицу данных, но я получаю сообщение об ошибке, когда я не вижу, почему я его получаю. Мой VBA немного ржавый, но следующий код должен работать
Sub FormatPnLDataTable(tableRange As Range)
Dim tempRange As Range, ws As Worksheet
Dim lStartRow As Long, lEndRow As Long, lLastCol As Long
Set ws = Sheets("PandLDataTable")
Application.CutCopyMode = False
lStartRow = tableRange.Row
lEndRow = lStartRow + tableRange.Rows.Count
lLastCol = tableRange.Columns.Count
'format the whole table with border
With tableRange
'format borders
'code removed for brevity
End With
'set range for the top row of table
Set tempRange = ws.Range(Cells(lStartRow, 1), Cells(lStartRow, lLastCol))
Код заблудших на этой линии
Set tempRange = ws.Range(Cells(lStartRow, 1), Cells(lStartRow, lLastCol))
но лист (WS) является допустимым, а переменные у всех есть их надлежащее значения для данного конкретного экземпляра, lStartRow является 1, lEndRow составляет 15 и lLastCol составляет 35
Попробуйте полностью квалифицируя 'свойство .Cells', и посмотреть, если это помогает. Это будет выглядеть так: 'Set tempRange = ws.Range (ws.Cells (lStartRow, 1), ws.Cells (lStartRow, lLastCol))' – user3561813
Действительно, если активный лист отличается от ws, он будет ошибочным –
См. Также : [Это . in. Изменить, если это определено .Cells?] (http://stackoverflow.com/questions/36368220/is-the-in-range-necessary-when-defined-by-cells). – Jeeped