更改命名范围的开始

时间:2017-11-13 04:41:34

标签: excel vba excel-vba

我有一个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)

但它只是继续将命名范围推到页面上。

我一直想做的是:

  • 查找第一个单元格的列索引
  • 将列中的第二个单元格指定为namedRange的开头
  • 将列中最后使用的单元格指定为namedRange
  • 的结尾

1 个答案:

答案 0 :(得分:2)

假设您的命名范围已经在右侧结束,快速修复将是:

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(...)。这使您可以不受任何活动的影响。

相关问题