如何将偏移方法与命名范围一起使用

时间:2013-07-01 17:35:08

标签: excel vba excel-vba

这可能有更好的逻辑,但使用笔记给用户是我理解使这个选择工作的唯一方法。也许你有更好的东西。

我几乎是在Windows XP机器上运行Excel 2010的新手。

我有一个命名范围(比如A2:D8),我称之为GanttArea。在A8中是用户注释“必须在此行上方插入任何其他行”。这是因为我不知道如何确保用户在正确的位置添加他们的额外行,并且我不知道他们是否会在此后添加其他几行单元格的行不适用于我我试图抓住。

如果我输入

Sub SelectRange()
    Range("GanttArea").select
End Sub

它将选择命名范围。我希望它向上移动一行,以免包括我的笔记。 如果我输入

Sub SelectRange()
    Range("GanttArea").Offset(-1,0).Select
End Sub

它确实将行向上移动以供我选择,但现在它包含行A1:D1,它们是标题行。我正在尝试为甘特图动态选择数据,所以这不起作用。

我刚刚想到,偏移可能不会改变选择,只是将相同数量的选定单元向上移动一行。

如何让命名范围扩展或收缩,以便用户可以添加或删除行?

谢谢你, 柯克

1 个答案:

答案 0 :(得分:5)

您可以使用Resize方法代替Offset,因此:

Sub SelectRange()
    Dim rng as Range: Set rng = Range("GanttArea")

    Set rng = rng.Resize(rng.Rows.Count - 1, rng.Columns.Count)
    rng.Select

End Sub

或者,您可以使用Offset函数简单地定义命名范围。

这些设置有点棘手,但只要您的A列不包含任何空白单元格,这应该可行。在您的名称管理器中,输入GantArea的此公式:

=OFFSET($A$1,1,0,COUNTA($A:$A)-1,4)

如果这样做,您应该能够在表区域的任何位置插入其他行,只要这些行在A列中不是空值,该范围将根据该公式动态调整大小。

enter image description here