【问题标题】:Procedure too large error when applying Macro. How can I make it smaller?应用宏时程序错误太大。我怎样才能让它变小?
【发布时间】:2019-05-27 06:20:47
【问题描述】:

所以,我希望某些列显示其值的颜色模式。从 A 列到 CD,但是我不能全部选择它们,否则我的工作表会被弄乱,因为平均值将从所有列的值中获取,我需要单独计算它。我的解决方案?从一列复制代码并再次粘贴并替换下一列,如下代码:

Sub Macro2()
'
' Macro2 Macro
'

'
    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 = 255
        .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 = 5287936
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).ColorScaleCriteria(3).Type = _
        xlConditionValueHighestValue
    With Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor
        .Color = 255
        .TintAndShade = 0
    End With
End Sub
Sub Macro3()
'
' Macro3 Macro
'

'
    Columns("B:B").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 = 255
        .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 = 5287936
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).ColorScaleCriteria(3).Type = _
        xlConditionValueHighestValue
    With Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor
        .Color = 255
        .TintAndShade = 0
    End With
    Columns("C:C").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 = 255
        .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 = 5287936
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).ColorScaleCriteria(3).Type = _
        xlConditionValueHighestValue
    With Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor
        .Color = 255
        .TintAndShade = 0
    End With
...

它会一直持续下去......

当我尝试运行它时,我收到一条错误消息“程序太大”。如何简化?

【问题讨论】:

    标签: excel


    【解决方案1】:

    使用循环:

    Dim c as Range, fc As ColorScale
    
    For Each c in Range("A1:CD1").Cells
    
        Set fc = c.EntireColumn.FormatConditions.AddColorScale( _
                                                   ColorScaleType:=3)
        fc.SetFirstPriority
        fc.ColorScaleCriteria(1).Type = xlConditionValueLowestValue
        With fc.ColorScaleCriteria(1).FormatColor
            .Color = 255
            .TintAndShade = 0
        End With
        fc.ColorScaleCriteria(2).Type = xlConditionValuePercentile
        fc.ColorScaleCriteria(2).Value = 50
        With fc.ColorScaleCriteria(2).FormatColor
            .Color = 5287936
            .TintAndShade = 0
        End With
        fc.ColorScaleCriteria(3).Type = xlConditionValueHighestValue
        With fc.ColorScaleCriteria(3).FormatColor
            .Color = 255
            .TintAndShade = 0
        End With
    
    Next c
    

    【讨论】:

    • 非常感谢!这正是我一直在寻找的:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 2022-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    相关资源
    最近更新 更多