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

mez*_*hic 11 excel vba

我有一个名为"X"的命名范围,它是1000行,我想动态地将其减少到100.

我试过Range("X").Resize(100,1),.Resize(-900,0)但是当我通过从范围下拉菜单中选择范围来检查excel时,似乎都没有改变命名范围的大小.我究竟做错了什么?

Jea*_*ett 26

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

Dim r As Range
Set r = Range("myRange")
Debug.Print r.Resize(10, 1).Address
Run Code Online (Sandbox Code Playgroud)

你的意思是:我有这个范围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
Run Code Online (Sandbox Code Playgroud)