gpt4 book ai didi

excel - vba excel 2010中意外的自主更改a1/r1c1表示法

转载 作者:行者123 更新时间:2023-12-04 21:51:06 27 4
gpt4 key购买 nike

我有一个似乎出现在 excel2010 但不是 excel2016 的 excel/vba 问题。对我来说,这是 a1 和 r1c1 符号之间的不可理解的转换。

我有一个动态范围

Dim rng As Range
rng = Application.Range("worksheet!A4:A" & _
Worksheets("worksheet").Range("A" & rows.Count).End(xlUp).Row

我还有一个名称变量(称为“Norm”)我用作单元格中的下拉选项,并希望根据动态范围使用更新它
With Application.Names("Norm")
.Name = "Norm"
.RefersTo = rng.Address
.Comment = ""
End With

两者都在 Workbook_BeforeSave 上运行。

在 vba 编辑模式下保存时,一切都按预期工作,名称变量在 a1 表示法中具有正确的范围,并且 Norm 的内容根据范围。

但是以纯 excel 模式保存会导致 r1c1 表示法中的范围无法由名称变量处理,使其为空。不幸的是,我找不到任何解释或解决方案。这是一个excel2010问题还是我能做些什么?

最佳答案

  • 范围是工作表的成员。
  • 将我们命名为工作簿的成员。
  • 你设置一个范围对象。
  • RefersTo 应该指向范围对象,而不是它的地址。

  • 修改后的代码:
    Dim rng As Range

    WITH THISWORKBOOK.WORKSHEETS("worksheet")
    SET rng = .Range(.cells(4, "a"), .cells(.rows.count, "a").end(xlup))
    end with

    With thisworkbook.Names("Norm")
    .Name = "Norm" 'totally redundant, it already has a name identified in the line above
    .RefersTo = rng 'no address, just rng
    .Comment = ""
    End With

    关于excel - vba excel 2010中意外的自主更改a1/r1c1表示法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53977011/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com