这可能有更好的逻辑,但使用给用户的注释是我理解使此选择起作用的唯一方法。也许你有更好的东西。
对于在 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 列中的空值,范围就会根据该公式动态调整大小。
关于vba - 如何对命名范围使用偏移方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17410357/