【问题标题】:When Using Selection.FormatConditions.Add – how do you provide the file name given to Formula1 so that Excel does not crash?使用 Selection.FormatConditions.Add 时 – 如何提供给 Formula1 的文件名,以便 Excel 不会崩溃?
【发布时间】:2021-08-27 01:12:37
【问题描述】:

我有一个程序可以有条件地格式化另一个工作簿的单元格。今天晚上,我第一次注意到程序开始崩溃并显示消息“运行时错误 5:无效的过程调用或参数”。我相信这是因为我试图有条件地格式化的文件名包含括号(!)我写这个是因为当我保存删除了括号的文件并再次运行我的程序时,没有运行-时间错误5问题!谁能解释一下是否有办法克服括号问题?

谢谢!

我的代码如下:

formulaAddMe = "=[" & targetTestWorkbook & "]" & targetTestSheet & "!" & targetPlacementPosition & formulaAddMe3

Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
                    formulaAddMe
                Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
                With Selection.FormatConditions(1).Interior
                    .PatternColorIndex = xlAutomatic
                    .ThemeColor = xlThemeColorDark1
                    .TintAndShade = 0
                    .Color = colourToInsert
                End With

    

当文件名包含括号时——在我的例子中是 PixelActivitySimpsons6(MeNewRandomPixels).xlsx——变量 formulaAddMe 包含以下内容:

formulaAddMe is
= [PixelActivitySimpsons6(MeNewRandomPixels).xlsx]Sheet2!$C$4=1

当文件名没有括号时 - 所以它变成 PixelActivitySimpsons6MeNewRandomPixels.xlsx - 变量 formulaAddMe 包含以下内容:

formulaAddMe is
= [PixelActivitySimpsons6MeNewRandomPixels.xlsx]Sheet2!$C$4= 1

谁能解释一下是否有办法格式化我的formulaAddMe,以便它可以在Selection.FormatConditions.Add中成功处理?

谢谢!

【问题讨论】:

  • 你在哪里添加条件格式?在targetTestWorkbook 中?如果是这样,那么我认为您甚至不需要公式中的文件名。不过,您可能需要引用工作表名称,以防它有空格。
  • targetTestWorkbook 可能引用的文件与具有条件格式的电子表格不同。然而,这不太可能,也不是我真正想要的(我只是让这种可能性保持开放)。那么,您是否认为解决方案是不允许targetTestWorkbook不同,所以我可以删除Selection.FormatConditions.add中的targetTestWorkbook?我注意到 targetTestWorksheet 几乎可以肯定与有条件格式化的工作表不在同一个工作表中!
  • 当我尝试添加指向不同工作簿的 CF 公式时,我收到一条不允许的消息 - “您不能使用对其他工作簿的引用作为条件格式标准”您可以使用不同的虽然在同一个工作簿中的工作表。仅供参考,我会在发布时避免使用“电子表格”一词,因为它有点模棱两可:文件的“工作簿”和选项卡的“工作表”更清晰。
  • 谢谢蒂姆·威廉姆斯!我已删除对其他工作簿的引用。我用包含括号的文件名再次尝试了我的代码,一切正常。但是,我们仍然没有解决为什么带括号的文件名是 Excel VBA 处理的问题?

标签: excel vba conditional-formatting


【解决方案1】:

条件格式不允许公式引用不同的工作簿。

关于使用公式的文件名中括号的一般问题,您可以通过将文件/工作表包围在 '' 中来解决此问题

例如:

='[PixelActivitySimpsons6(MeNewRandomPixels).xlsx]Sheet2'!$C$4=1

【讨论】:

  • 非常感谢蒂姆!我认为这很好地回答了这个问题。
猜你喜欢
  • 1970-01-01
  • 2017-10-01
  • 2013-04-20
  • 2013-08-02
  • 2020-10-08
  • 2021-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多