访问命名区域修改值时出现“对象不支持该属性或方法”错误
解决工作簿级常量命名区域赋值报错问题
问题原因
你定义的Table1LastRowFixed是工作簿级常量命名区域(即命名时直接设置为固定值,未关联单元格),这类命名项不属于Range对象的引用范围——Range只能指向单元格区域,无法识别常量类型的命名项,因此用ActiveWorkbook.Range("Table1LastRowFixed")赋值会触发“Object doesn't support this property or method”错误。
而Evaluate可以直接解析命名常量的表达式返回值,所以读取操作正常。
修复代码
直接通过工作簿的Names集合修改该命名常量的值:
Sub CheckStuff() Dim currentRowCount As Long Dim fixedLastRow As Long ' 读取两个命名项的数值 currentRowCount = Evaluate("Table1RowCount") fixedLastRow = Evaluate("Table1LastRowFixed") If currentRowCount > fixedLastRow Then ' 修改常量命名区域的值,注意RefersTo必须以=开头 ActiveWorkbook.Names("Table1LastRowFixed").RefersTo = "=" & currentRowCount End If End Sub
关键说明
- 工作簿级命名常量属于
Names集合对象,修改其值需操作RefersTo属性,且必须保留=前缀(Excel命名项的引用公式要求以等号开头)。 - 可通过Excel「公式」选项卡的「名称管理器」验证:若
Table1LastRowFixed的「引用位置」是类似=20的常量表达式,就属于此类情况;若指向单元格(如=Sheet1!$A$1),才可以用Range操作。
内容的提问来源于stack exchange,提问作者user27447697
相关产品推荐
相关产品推荐

