循环浏览工作表(并应用条件格式)

问题描述 投票:0回答:1

这个子程序无法正确循环工作表,我错过了什么?

我知道格式化规则可以做得更好,但它必须是这样的,以便用户可以将自己的规则快速复制/粘贴到代码中(宏记录器 - >以特定方式创建新的条件格式化规则(!) - > 停止宏。然后宏会吐出所有条件格式规则的代码!)。

循环不起作用。我没有收到任何错误消息。

Sub Test()

Dim rg As Range
Dim i As Integer, j As Integer
Dim wb As Workbook: Set wb = ThisWorkbook


i = wb.Worksheets.Count

Application.ScreenUpdating = False
    
'COPY CODE BETWEEN "OBERES ENDE" and "UNTERES ENDE"


 For j = 6 To i  
 
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'---------------------------------------------------- OBERES ENDE --------------------------------------------------------------------------------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

' only one as example

    Columns("A:K").Select
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$K1=50%"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 49407
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = False
        
    
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'---------------------------------------------------- UNTERES ENDE --------------------------------------------------------------------------------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Next j

wb.Save
Application.ScreenUpdating = True

End Sub
excel vba loops worksheet
1个回答
0
投票

不需要

Selection
,使用
With

Option Explicit

Sub Test()

    Dim wb As Workbook, j As Integer
    Set wb = ThisWorkbook
    
    Application.ScreenUpdating = False
    For j = 6 To wb.Worksheets.Count
        With wb.Sheets(j).Columns("A:K")
            .FormatConditions.Add Type:=xlExpression, Formula1:="=$K1=50%"
            .FormatConditions(.FormatConditions.Count).SetFirstPriority
             With .FormatConditions(1).Interior
                .PatternColorIndex = xlAutomatic
                .Color = RGB(255, 192, 0) ' 49407
                .TintAndShade = 0
             End With
            .FormatConditions(1).StopIfTrue = False
        End With
    Next
    Application.ScreenUpdating = True
    wb.Save
    
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.