更改命名范围的开始

我有一个单独的namedRange(例如)错误地从第1列的第5行开始,当它应该在第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) 

但它只是不断推动页面上的命名范围。

我一直在试图做的是这样的:

  • find第一个单元格的列索引
  • 指定列中的第二个单元格作为namedRange的开始
  • 指定列中最后使用的单元格作为namedRange的结尾

假设你的命名范围已经结束在正确的行,一个快速解决scheme将是:

 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 

请注意,您不应该调用范围没有它的父母限定,例如,你应该使用MyWorksheet.Range(...) 。 这可以让你免费工作。