在VBA中存储/加载条件格式信息

有没有一种方法可以存储和以后恢复条件格式信息? 在select一个单元格时,我想要在某些数组中存储对应的列/行的格式2 /删除相应的列/行的格式3 /将列/行的InteriorColor更改为好的(以便我看到十字线)4 /select另一个单元格时,我想恢复原始列/行的格式,并从当前选定单元格的1 /重复该过程。

我试过类似的东西

Public condFmt1 As FormatCondition Set condFmt1 = Range("A1").FormatConditions.Item(1) ... Set Range("A2").FormatConditions.Item(1) = condFmt1 

然而,最后一行给我一个runTime错误438 – 对象确实支持这个属性或方法。 我可能分配错误。

在玩了一个小时之后,我发现了一种在VBA中使用FormatCondition值的方法。

此代码复制我的“A1”范围的条件格式,如果值为TRUE ,则设置为将字体更改为粗体

 Sub CopyFormatCondition() Dim fC As FormatCondition Set fC = Range("A1").FormatConditions.Item(1) Range("A2").FormatConditions.Add Type:=xlCellValue, Operator:=fC.Operator, Formula1:=fC.Formula1 Range("A2").FormatConditions.Item(1).Font.Bold = fC.Font.Bold End Sub 

当FormatCondition被初始化时,必须设置TypeOperatorFormula1等属性,因此我必须将FormatCondition添加到范围的FormatConditions集合中。

其他属性(例如FontInterior )可以在FormatCondition的初始化之后设置。

假设您使用的是Excel 2007或更高版本,那么您也可以使用非VBA解决scheme实现您的目标:

  1. 在工作表/工作簿中使用空单元格作为触发单元格,并将其设置为TRUE 。 为方便起见,将此单元命名为DisableConditionalFormatting或类似的。
  2. select工作表的活动区域(Ctrl-A)并插入新规则 – >使用公式来确定要格式化的单元格。 作为一个公式设置=DisableConditionalFormatting 。 这里不需要改变格式。
  3. 设置新规则后,请务必在条件格式设置规则pipe理器中选中checkboxStop if true

不,您可以通过更改单元格DisableConditionalFormatting打开和closures工作表的条件格式。