【问题标题】:FormatCondition.Modify results in Run-time error '1004' Application-defined or object-defined errorFormatCondition.Modify 导致运行时错误“1004”应用程序定义或对象定义错误
【发布时间】:2019-10-14 05:35:33
【问题描述】:

我有设置工作表的 vba 代码,其中一个功能是“Y”列的条件格式。当我尝试更改 FormatCondition 对象的 Formula1 时,我得到运行时“1004”。

高尔夫球场将使用 Excel 模板来帮助对大量球员进行的比赛进行评分。我使用单元格填充突出显示来引起对重要值的注意——在这种情况下——“总游戏”中的前三名玩家。 “Y8:Y127”范围的 FormatConditions 集合中存在三个 FormatCondition 对象。我编写了一些代码,部分枚举了现有的 FormatCondition 对象,所以我知道它们在那里并且包含预期的内容。我通过普通的 Excel GUI 创建了这些 - 而不是 vba。

For k = 1 To 3
    WST.Range("$Y$8:$Y$127").FormatConditions(k).Modify xlExpression, , 
      Replace(strScore, "#", k, 1, 1)
Next k

问题出现在 k = 1 时。

Replace 函数调用导致:

=VLOOKUP(A8,$A$7:$AY$127,51,FALSE)=1

我正在尝试修改 FormatCondition 对象的 Formula1,它开始包含:

=VLOOKUP(A8,$AA$7:$AY$127,25,FALSE)=3

我在调试器中尝试了以下操作:

 ? Replace(strScore,"#",k,1,1)
 =VLOOKUP(A8,$A$7:$AY$127,51,FALSE)=1
 ? WST.Range("$Y$8:$Y$127").FormatConditions(k).Formula1
 =VLOOKUP(A8,$AA$7:$AY$127,25,FALSE)=3


x=WST.Range("$Y$8:$Y$127").FormatConditions(k).Modify(xlExpression,,"=VLOOKUP(A8,$A$7:$AY$127,51,FALSE)=1","")

我尝试激活 WST 表,但结果相同。

所有尝试都会导致运行时错误“1004”

【问题讨论】:

  • 感谢格式更新

标签: excel vba


【解决方案1】:

很抱歉在这个论坛上打扰了人们。我可以解决这个问题。 FormatCondition 对象失败,因为工作表受到保护。但工作表受到以下保护:

 `wks.Protect Password:=gPassword, UserInterfaceOnly:=True`

这应该允许 vba 修改条件格式,但防止通过用户界面修改 mod。这适用于 Excel 中的大多数内容,但显然不适用于 FormatCondition 对象。

【讨论】:

    猜你喜欢
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2016-01-14
    • 1970-01-01
    相关资源
    最近更新 更多