VBA条件格式|使用VBA Excel应用条件格式

Excel VBA中的条件格式

我们可以将条件格式应用于Excel中的一个单元格或单元格范围。条件格式是仅适用于满足某些条件的单元格的格式,例如高于特定值的值,正值或负值或具有特定公式的值等。此条件格式也可以在excel VBA编程中使用这 '格式条件收集”在宏/过程中。

格式条件用于表示可通过调用返回该类型变量的方法来设置的条件格式。它包含单个范围的所有条件格式,并且只能容纳三种格式条件。

FormatConditions.Add / Modify / Delete 在VBA中用于在集合中添加/修改/删除FormatCondition对象。每种格式都由FormatCondition对象表示。 格式条件 是Range对象的属性,并且 添加 具有以下具有以下语法的参数:

FormatConditions.Add(类型,运算符,公式1,公式2) 

Add公式语法具有以下参数:

  • 类型: 必需,表示条件格式是否基于单元格或表达式中的值
  • 操作员: 可选,表示当“类型”基于单元格值时要与值一起使用的运算符
  • 公式1: 可选,表示与条件格式关联的值或表达式。
  • Formula2: 可选参数,当参数:“运算符”为“ xlBetween”或“ xlNotBetween”时,表示与条件格式的第二部分关联的值或表达式

FormatConditions.Modify 也具有与以下相同的语法 FormatConditions.Add。

以下是“添加” /“修改”的某些参数可以采用的一些值/枚举的列表:

VBA条件格式的示例

以下是excel vba中条件格式的示例。

您可以在此处下载此VBA条件格式模板– VBA条件格式模板

范例#1

假设我们有一个包含一些学生的姓名和标记的Excel文件,我们希望将标记确定/突出显示为大于80的粗体和蓝色,以及小于50的粗体和红色。让我们查看文件中包含的数据:

我们使用下面的FormatConditions.Add函数来完成此操作:

  • 转到开发人员-> Visual Basic编辑器:

  • 右键单击“ Project-VBAProject”窗格中的工作簿名称,然后单击“插入”->“模块”。

  • 现在,在此模块中编写代码/过程:

代码:

 子格式()结束子 

  • 定义变量rng,condition1,condition2:

代码:

 Sub formatting()Dim rng作为范围Dim condition1作为FormatCondition,condition2作为FormatCondition End Sub 

  • 使用VBA的“范围”功能设置/固定需要条件格式设置的范围:

代码:

 Sub formatting()Dim rng作为范围Dim condition1作为FormatCondition,condition2作为FormatCondition Set rng = Range(“ B2”,“ B11”)End Sub 

  • 使用“ FormatConditions.Delete”从范围中删除/清除任何现有的条件格式(如果有的话):

代码:

 Sub formatting()Dim rng作为范围Dim condition1作为FormatCondition,condition2作为FormatCondition Set rng = Range(“ B2”,“ B11”)rng.FormatConditions.Delete End Sub

  • 现在,使用“ FormatConditions.Add”为每种条件格式定义和设置条件:

代码:

 Sub formatting()Dim rng As Range Dim condition1 As FormatCondition,condition2 As FormatCondition Set rng = Range(“ B2”,“ B11”)rng.FormatConditions.Delete设置condition1 = rng.FormatConditions.Add(xlCellValue,xlGreater,“ = 80 “)设置condition2 = rng.FormatConditions.Add(xlCellValue,xlLess,” = 50“)结束子 

  • 定义并设置要应用于每种条件的格式

将此代码复制并粘贴到您的VBA类模块中。

代码:

 Sub formatting()'定义变量:Dim rng作为范围Dim condition1作为FormatCondition,condition2作为FormatCondition'固定/设置要设置条件格式的范围Set rng = Range(“ B2”,“ B11”)'至从rng.FormatConditions.Delete范围中删除/清除任何现有的条件格式'为每种条件格式定义和设置标准设置condition1 = rng.FormatConditions.Add(xlCellValue,xlGreater,“ = 80”)设置condition2 = rng.FormatConditions。 Add(xlCellValue,xlLess,“ = 50”)'定义和设置要在条件1 .Font.Color = vbBlue .Font.Bold = True End with condition2 .Font.Color = vbRed .Font的每个条件下应用的格式。粗体=真实结尾,结尾结尾 

现在,当我们使用F5键或手动运行此代码时,我们看到小于50的标记以黑体和红色突出显示,而大于80的标记以黑体和蓝色突出显示,如下所示:

笔记: 可与FormatCondition一起使用的格式化单元格外观的一些属性是:

范例#2

假设在上面的示例中,我们还有另一列指出学生得分超过80分,则该学生为“ Topper”,否则,他们的成绩为Pass / Fail。现在,我们希望将以“ Topper”表示的值突出显示为粗体和蓝色。让我们查看文件中包含的数据:

在这种情况下,代码/过程将按以下方式工作:

代码:

 子TextFormatting()结束子 

定义并设置要应用于每种条件的格式

代码:

 Sub带有Range(“ c2:c11”)的TextFormatting()。FormatConditions.Add(xlTextString,TextOperator:= xlContains,String:=“ topper”)带有.Font .Bold = True .Color = vbBlue带有结束的End结束 

我们可以在上面的代码中看到我们要测试的范围:“ C2:C11”是否包含字符串:“ Topper”,因此“ Format.Add”的参数:“ Operator”采用了枚举:“ xlContains”,在固定范围(即C2:C11)中测试此条件,然后在此范围上进行所需的条件格式设置(字体更改)。

现在,当我们手动或通过按F5键运行此代码时,我们看到带有“ Topper”的单元格值以蓝色和粗体突出显示:

笔记: 因此,我们在上面的两个示例中看到了在任何单元格值条件(数字或文本字符串)的情况下,“添加”方法的工作方式。

以下是一些其他实例/条件,可用于测试并因此在其上应用VBA条件格式:

  • 按时间段格式
  • 平均状况
  • 色阶条件
  • IconSet条件
  • 数据栏条件
  • 独特价值
  • 重复值
  • 十大价值观
  • 百分位数条件
  • 空白条件等

在要测试的条件不同的情况下,“添加”的参数会采用不同的值/枚举。

有关VBA条件格式的注意事项

  • 带有“ FormatConditions”的“添加”方法用于创建新的条件格式,“删除”方法用于删除任何条件格式,“修改”方法用于更改任何现有的条件格式。
  • 如果为单个范围创建了三种以上的条件格式,则带有“ FormatConditions集合”的“添加”方法将失败。
  • 要使用“添加”方法将三种以上的条件格式应用于某个范围,我们可以使用“如果”或“选择大小写”。
  • 如果“添加”方法的“类型”参数为:“ xlExpression”,则将忽略参数“运算符”。
  • “添加”方法中的参数“公式1”和“公式2”可以是单元格引用,常量值,字符串值,甚至是公式。
  • 参数:“ Formula2”仅在参数:“运算符”为“ xlBetween”或“ xlNotBetween”时使用,否则将被忽略。
  • 要从任何工作表中删除所有条件格式,我们可以使用“删除”方法,如下所示:
Cells.FormatConditions.Delete