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

标签 excel vba

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

我尝试了 Range("X").Resize(100,1).Resize(-900,0) 但似乎都没有改变当我通过从范围下拉菜单中选择范围来 checkin Excel 时的命名范围。我做错了什么?

最佳答案

假设您有一个名为“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

关于excel - 如何使用 VBA 重新定义命名范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11031891/

相关文章:

excel - 将一维数组(变体类型)转换为一维数组(字节类型)

excel - 创建一个集合作为字典的值

excel - 使用数组使用 VBA 绘制树/格子

arrays - 如何创建名称来自循环的变量

excel - 如何转置Excel中其他选项卡中的数据

vba - 如何在初始化/激活事件期间将焦点发送到 VBA 表单的文本框?

excel - 使用 ADO 从 Excel 读取数据的空值

vba - 将 A 列中的数字序列自动填充到 B 列

c# - 如果 Excel 列在 asp.net c# 中具有某些值,则提示消息

python - 解析Excel公式