Изменить начало именованного диапазона

У меня есть один namedRange, который (например) неправильно запускается в строке 5 столбца 1, когда он должен начинаться с строки 2 (в строке заголовка).

ПРИМЕЧАНИЕ. На самом деле я не знаю, где он «начинается» только в том, что он где-то НИЖЕ, где он должен быть.

Я пытаюсь переместить namedRange следующим образом:

Set SecondCellInFirstColumnOfNamedRange = Range(rngNames(irng)).Columns(1).Cells(2) Set LastCellInFirstColumnOfNamedRange = Range(rngNames(irng)).Columns(1).Cells(RowNumberOfLastCell) Range(SecondCellInFirstColumnOfNamedRange, LastCellInFirstColumnOfNamedRange).Name = rngNames(irng) 

Но он просто продолжает толкать именованный диапазон вниз по странице.

То, что я пытался сделать, это следующее:

  • найти индекс столбца первой ячейки
  • укажите вторую ячейку в столбце в качестве начала namedRange
  • укажите последнюю использованную ячейку в столбце в качестве конца namedRange

Предполагая, что ваш именованный диапазон уже заканчивается в правой строке, быстрое исправление будет:

 With Range(rngNames(irng)) .Offset(-3).Resize(.Rows.Count + 3).Name = rngNames(irng) End With 

Принцип состоит в том, чтобы назвать диапазон, который начинается с 3 строк выше и имеет 3 строки «дольше».

Изменить : согласно вашему обновленному вопросу:

 With Range(rngNames(irng)) .Worksheet.Range(.Columns(1).EntireColumn.Cells(2, 1), .Cells(.Cells.CountLarge)).Name = rngNames(irng) End With 

Обратите внимание, что вы не должны вызывать Range, если он не будет MyWorksheet.Range(...) его родителем, например, вы должны использовать MyWorksheet.Range(...) . Это позволяет вам работать независимо от того, что активно.

Давайте будем гением компьютера.