簡體   English   中英

VBA 無效的過程調用或參數:存儲在數組中的項目的條件格式

[英]VBA invalid procedure call or argument: Conditional formatting for items stored in an array

我想清除並重置我的工作簿的條件格式規則。 我希望有條件格式化為綠色、黃色、橙色、紅色和粉紅色的值組。 每個顏色組的值存儲在一個數組中。

下面是我到目前為止的代碼,但只顯示了綠色和黃色的 for 循環。 我在這一行得到錯誤Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual,Formula1:=item

Sub ResetFormat()

Dim ws As Worksheet
Dim item As Variant

Dim arrGreen As Variant
    arrGreen = Array(Worksheets("Drop down").Range("N11:N14"))
Dim arrYellow As Variant
    arrYellow = Array(Worksheets("Drop down").Range("O11:O13"))
Dim arrOrange As Variant
    arrOrange = Array(Worksheets("Drop down").Range("P11:P14"))
Dim arrRed As Variant
    arrRed = Array(Worksheets("Drop down").Range("Q11:Q14"))
Dim arrPink As Variant
    arrPink = Array(Worksheets("Drop down").Range("R11:R12"))
    
For Each ws In Sheets
Cells.Select
        Selection.Cells.FormatConditions.Delete
    For Each item In arrGreen
        
        
        Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
            Formula1:=item
        
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 5287936
            .TintAndShade = 0
        End With
    Next item
    
    For Each item In arrYellow
        
        
        Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
            Formula1:=item
        
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 49407
            .TintAndShade = 0
        End With
    Next item
    

Next ws

End Sub

對我有用的是使用范圍而不是數組,並添加以下行:

Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority

結果代碼:

Sub ResetFormat()

Dim ws As Worksheet
Dim item As Variant

Dim rngGreen As Range
    Set rngGreen = Worksheets("Drop down").Range("N11:N14")
Dim arrYellow As Range
    Set rngYellow = Worksheets("Drop down").Range("O11:O13")
Dim rngOrange As Range
    Set rngOrange = Worksheets("Drop down").Range("P11:P14")
Dim rngRed As Range
    Set rngRed = Worksheets("Drop down").Range("Q11:Q14")
Dim rngPink As Range
    Set rngPink = Worksheets("Drop down").Range("R11:R12")

    
For Each ws In Sheets
    ws.Activate
    Cells.Select
    Selection.Cells.FormatConditions.Delete
    For Each item In rngGreen
        
        Cells.Select
        Selection.FormatConditions.Add Type:=xlTextString, String:=item, TextOperator:=xlEqual

        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .Color = 5287936
        End With
        Selection.FormatConditions(1).StopIfTrue = False
    Next item
    
    For Each item In rngYellow
        
        Cells.Select
        Selection.FormatConditions.Add Type:=xlTextString, String:=item, TextOperator:=xlEqual
        
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .Color = 49407
        End With
        Selection.FormatConditions(1).StopIfTrue = False
    Next item
    

Next ws

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM