【问题标题】:changing Named range reference after inserting columns插入列后更改命名范围引用
【发布时间】:2019-07-05 12:05:39
【问题描述】:

我有一个将列添加到命名范围末尾的代码。为此,我定义了“LastM”和“LastQ”,它们对命名范围内的列进行计数,然后复制这些列(参见下面的代码)。

但是,一旦插入列,命名范围就会扩大,但“LastM”的值是固定的,我不能再将它用于进一步的操作。

有没有办法使“LastM”变量,即在将列添加到命名范围后再次计算列?

我想我可以定义一个新的“LastM2”并再次计数列,但我觉得这不是一个非常有效的解决方案。

感谢您的帮助!

'Adding 3 rows to monthly Data
LastM = ws.Range("Monthly").Columns.Count
Set Rng1 = Range("Monthly").Columns(LastM).Offset(0, -1)
Set Rng2 = Range("Monthly").Columns(LastM).Offset(0, -3)
Range(Rng1, Rng2).Copy
Range(Rng1, Rng2).EntireColumn.Offset(0, 3).Insert

'Adding 1 row to Quaterly Data
LastQ = ws.Range("Quaterly").Columns.Count
Set Rng3 = Range("Quaterly").Columns(LastQ).Offset(0, -1)
Rng3.Copy
Rng3.EntireColumn.Offset(0, 1).Insert

'LAstQ and LastM are fixed but the Named range expanded'    

【问题讨论】:

  • 我不需要保留旧计数,只需覆盖您在 LastM 中的内容。

标签: excel vba reference named-ranges


【解决方案1】:

这样的事情怎么样?

with ws.Range("Monthly")
    'Adding 3 rows to monthly Data
    Set Rng1 = .Columns(.Columns.Count).Offset(0, -1)
    Set Rng2 = .Columns(.Columns.Count).Offset(0, -3)
    Range(Rng1, Rng2).Copy
    Range(Rng1, Rng2).EntireColumn.Offset(0, 3).Insert
end with

with ws.Range("Quaterly")
    'Adding 1 row to Quaterly Data
    Set Rng3 = .Columns(.Columns.Count).Offset(0, -1)
    Rng3.Copy
    Rng3.EntireColumn.Offset(0, 1).Insert
end with

【讨论】:

    猜你喜欢
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    相关资源
    最近更新 更多