excel - 如何以更有效的方式在 VBA 中对色标进行条件格式化?
问题描述
由于我想在如下所示的范围内对色标进行条件格式设置,因此我在执行此操作时记录了宏。代码可以工作,但是当我对 36 个数据透视表执行相同操作时,我遇到了“过程是大错误”(编译错误)。那么有没有办法减少程序的大小,以便我可以为 60 个可旋转的对象做这件事?
我用于色标的条件格式类型
Sub test()
Range("B5:J12").Select
Selection.FormatConditions.AddColorScale ColorScaleType:=3
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _
xlConditionValueLowestValue
With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor
.Color = 7039480
.TintAndShade = 0
End With
Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _
xlConditionValuePercentile
Selection.FormatConditions(1).ColorScaleCriteria(2).Value = 50
With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor
.Color = 8711167
.TintAndShade = 0
End With
Selection.FormatConditions(1).ColorScaleCriteria(3).Type = _
xlConditionValueHighestValue
With Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor
.Color = 8109667
.TintAndShade = 0
End With
Selection.FormatConditions(1).ScopeType = xlSelectionScope
End Sub
错误信息
解决方案
您需要将格式化代码提取到一个单独的子代码中,然后从主代码中调用它——无需一遍又一遍地重复几乎相同的行。
例如:
Sub Main()
ApplyFC Worksheets("Sheet1").Range("B5:J12")
ApplyFC Worksheets("Sheet2").Range("B5:J12")
'etc etc
End Sub
Sub ApplyFC(rng As Range)
With rng.FormatConditions.AddColorScale(ColorScaleType:=3)
.SetFirstPriority
.ColorScaleCriteria(1).Type = xlConditionValueLowestValue
With .ColorScaleCriteria(1).FormatColor
.Color = 7039480
.TintAndShade = 0
End With
.ColorScaleCriteria(2).Type = xlConditionValuePercentile
.ColorScaleCriteria(2).Value = 50
With .ColorScaleCriteria(2).FormatColor
.Color = 8711167
.TintAndShade = 0
End With
.ColorScaleCriteria(3).Type = xlConditionValueHighestValue
With .ColorScaleCriteria(3).FormatColor
.Color = 8109667
.TintAndShade = 0
End With
.ScopeType = xlSelectionScope
End With
End Sub
推荐阅读
- javascript - Vue.js - 发出更新数组不起作用
- php - 为标签命名并调用 if isset 函数
- bash - Microsoft AppCenter 上用于预构建脚本的 bash 脚本错误
- python - Python套接字:解码数据包问题
- android - 构造函数 SQLiteDatabase 不能在 android studio 中应用
- php - 将 PHP 与 Firebase 数据库一起使用很慢
- android - 如何在画布上绘制的圆圈上有一个脉动动画
- javascript - 如何使用带有 Django 模板标签的 amp CSS 星级评分?
- python - 元组的哈希函数如何工作
- jquery - 在 React 子组件中成功响应后,jQuery“.done”不会触发