如何用VBA重新定义命名范围?

我有一个名为“X”的范围是1000行,我想dynamic地减less到100。

我尝试了Range("X").Resize(100,1).Resize(-900,0)但似乎都没有改变命名范围的大小,当我通过select从范围下拉列表中select范围,下拉菜单。 我究竟做错了什么?

假设您有一个名为“myRange”的命名范围。 如果你这样做:

 Dim r As Range Set r = Range("myRange") Debug.Print r.Resize(10, 1).Address 

你说的是:我有这个范围r 。 将其设置为匹配myRange作为其初始状态。 然后调整r到别的东西。 你所做的是你调整了r ,而不是myRange

要调整命名的范围,你需要做这样的事情:

 Dim wb As Workbook Dim nr As Name Set wb = ActiveWorkbook Set nr = wb.Names.Item("myRange") ' give an absolute reference: nr.RefersTo = "=Sheet1!$C$1:$C$9" ' or, resize relative to old reference: With nr .RefersTo = .RefersToRange.Resize(100, 1) End With 

感谢你的贡献。 基于你的帮助,我能够把这个代码放在一起来调整范围的大小,并从一个数组中发布n行到它。

 Sub PostArrayLinesToRange(ByVal rngName As String, ByRef arr As Variant, ByVal r As Long) Dim wb As Workbook Dim rng As Range Dim nr As Name 'Variable to change named range size definition Set wb = ThisWorkbook Set rng = Range(rngName) rng.Clear Set nr = wb.Names.item(rngName) With nr .RefersTo = .RefersToRange.Resize(r, UBound(arr, 2)) End With Set rng = Range(rngName) rng = arr Erase arr Set nr = Nothing Set rng = Nothing Set wb = Nothing End Sub