Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 使用代码编辑现有条件格式_Vba_Excel_Conditional Formatting - Fatal编程技术网

Vba 使用代码编辑现有条件格式

Vba 使用代码编辑现有条件格式,vba,excel,conditional-formatting,Vba,Excel,Conditional Formatting,(Excel 2016)我有几个带有现有条件格式的大型电子表格。在任何特定的工作表上,我都有几个表,每个表都有自己的一组条件格式。表格大小不同,因此范围也不同。还有很多(100年代)。相同的规则适用于每个集合,也就是说,我要编辑的条件格式是一致的,适用于每个范围/表格的4种格式的相同“集合”(例如,红色/黄色/绿色/蓝色) 我试图找出如何在现有格式中编辑颜色值。例如,将当前为绿色的文本颜色更改为浅绿色。现在我必须手动编辑数百个公式条目 我看过很多关于通过VBA应用条件格式的示例,但我不知道如何在

(Excel 2016)我有几个带有现有条件格式的大型电子表格。在任何特定的工作表上,我都有几个表,每个表都有自己的一组条件格式。表格大小不同,因此范围也不同。还有很多(100年代)。相同的规则适用于每个集合,也就是说,我要编辑的条件格式是一致的,适用于每个范围/表格的4种格式的相同“集合”(例如,红色/黄色/绿色/蓝色)

我试图找出如何在现有格式中编辑颜色值。例如,将当前为绿色的文本颜色更改为浅绿色。现在我必须手动编辑数百个公式条目


我看过很多关于通过VBA应用条件格式的示例,但我不知道如何在不更改其顺序或优先级的情况下逐步浏览这些表并编辑现有格式。

如果您只想修改填充颜色,循环浏览工作表上的所有
.FormatConditions
,并使用
选择。。。Case
修改颜色顺序

Option Explicit

Sub wqwqty()
    Dim cfr As Long
    With Worksheets("Sheet1").Cells
        For cfr = 1 To .FormatConditions.Count
            With .FormatConditions(cfr).Interior
                Debug.Print .Color
                Select Case .Color
                    Case 255                'dark red
                        .Color = 192        'light red
                    Case 192                'dark red
                        .Color = 255        'light red
                    Case 5287936            'dark green
                        .Color = 5296274    'light green
                    Case 12611584           'dark blue
                        .Color = 15773696   'light blue
                    Case 49407              'orange
                        .Color = 65535      'yellow
                End Select
                Debug.Print .Color
            End With
        Next cfr
    End With
End Sub

假设没有VBA代码来检查单元格是否应用了条件格式。因此,您必须尝试获取它,并同时使用
On Error Resume Next
来规避此缺点。类似地,无法确定任何给定单元格当前有多少条件格式。再一次,您必须尝试在下一次错误恢复时使用
。简言之:我同意@Jeeped,最好的方法是删除它们并重做它们,而不是试图用可怕的编码实践编写一些间接代码来克服VBA在这方面的缺点。您的更改列表在哪里?e、 原来的颜色,新的颜色,etcI在早些时候的评论中说得不合时宜。您不能更改CFR的
公式1
参数,但可以调整颜色,而无需破坏和重建颜色。见下文。(@Ralph)谢谢大家。Jeeped:代码示例似乎就是我想要做的。我只需要在所有实例中以编程方式调整颜色。从一个到另一个。在某些情况下,它是文本颜色,因此.Interior更改为什么?代码(Sub wqwqty())是否仅更改显示条件?我的意思是:如果我有一个导致绿色文本和绿色内部的条件,另一个条件是红色文本。我设置并运行代码,将绿色文本的formatconditions更改为白色文本。我有一个单元格,它的条件使它的文本为红色。在我运行代码后,该单元格的值会发生变化,使其符合绿色条件。该单元格是否将变为所需的绿色填充(白色文本)或变回绿色上的原始绿色。希望我的措辞足够清楚。我希望我不会因为每天/每周给你太多的选票而被禁止进入这个网站。我听说,当一个用户在这个网站上过分抬高另一个用户的声誉时,就会引发这种行为。但话说回来。。你几乎所有的答案都很好,值得投票支持,这不是我的错。是吗?@shorton-
.Interior
将更改为
.Font
,如果您更改的是字体颜色而不是背景颜色。您需要堆叠两个选定的。。。案例陈述一个接一个的结束选择。一个用于
内部
另一个用于
.Font
@Ralph-我认为SO计票算法产生感知并接管整个操作不会太久,在这种情况下,我们都注定要失败。:)