我有设置工作表的vba代码,功能之一是“ Y”列的条件格式。当我尝试更改FormatCondition对象的Formula1时,得到运行时'1004'。
高尔夫球场将使用的Excel模板来帮助计分大批球员打的比赛。我使用单元格填充的突出显示来唤起对“ Total Game”中前三名玩家的重视(在这种情况下)。在范围“ 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'
答案 0 :(得分:0)
很抱歉在这个论坛上困扰着人们。我可以解决这个问题。由于工作表受保护,因此FormatCondition对象失败。但是工作表受以下保护:
`wks.Protect Password:=gPassword, UserInterfaceOnly:=True`
这应该允许vba修改条件格式,但可以通过用户界面阻止mods。这适用于Excel中的大多数功能,但显然不适用于FormatCondition对象。