vba - 如何对命名范围使用偏移方法

标签 vba excel

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

对于在 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,它们是标题行。我正在尝试为甘特图动态选择数据,因此这不起作用。

我刚刚想到,也许偏移量并没有改变选择,而只是将相同数量的选定单元格向上移动一行。

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

谢谢你, 柯克

最佳答案

您可以使用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

关于vba - 如何对命名范围使用偏移方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17410357/

相关文章:

vba - 使用 VBA 将条件格式从一个单元格复制到另一个单元格?

Excel公式计算基于其他单元格的值

excel - 将下一个匹配返回到列中的相等值

function - Excel VBA 日期之间的计数

VBA 属性类型

vba - Excel vba - 将用户当前的自动完成设置保存为变量

excel - 如何复制所有工作表中的最后一行数据并将其粘贴到一个工作表中

vba - 打开excel文件时出现运行时错误

perl - 将 Word doc 或 docx 文件转换为文本文件?

vba - 将工作表移动到可见的 Excel 实例