ichigo
ichigo

Reputation: 327

How to Create Multiple FormatConditions in Excel using Python

With the following code, in theory, it should set 2 different formatconditions with different colors for each one in the range of F through AA columns. Unfortunetly once I run this Python script, excel only gets the information for the first condition, where the 2nd condition is in excel but missing the color fill. Any advice?

    formula1 = "=95" 
formula2 = "=100"
wb.ActiveSheet.Columns("F:AA").FormatConditions.Add(win32c.xlCellValue , win32c.xlBetween , formula1,formula2)             
#wb.ActiveSheet.Columns("F:AA").FormatConditions(excel.Selection.FormatConditions.Count).SetFirstPriority()              
wb.ActiveSheet.Columns("F:AA").FormatConditions(1).Font.Bold = True            
wb.ActiveSheet.Columns("F:AA").FormatConditions(1).Interior.Color = 8420607                       
wb.ActiveSheet.Columns("F:AA").FormatConditions(1).StopIfTrue = False 
wb.ActiveSheet.Columns("F:AA").FormatConditions.Add(win32c.xlCellValue , win32c.xlGreaterEqual , formula2)             
#wb.ActiveSheet.Columns("F:AA").FormatConditions(excel.Selection.FormatConditions.Count).SetFirstPriority()              
wb.ActiveSheet.Columns("F:AA").FormatConditions(1).Font.Bold = True          
wb.ActiveSheet.Columns("F:AA").FormatConditions(1).Interior.Color = 10092543                       
wb.ActiveSheet.Columns("F:AA").FormatConditions(1).StopIfTrue = False 

Upvotes: 0

Views: 2421

Answers (1)

ichigo
ichigo

Reputation: 327

Found my mistake I needed to set the index of FormatConditions:

            formula1 = "=95" 
            formula2 = "=100"
            wb.ActiveSheet.Columns("F:AA").FormatConditions.Add(win32c.xlCellValue , win32c.xlBetween , formula1,formula2)             
            #wb.ActiveSheet.Columns("F:AA").FormatConditions(excel.Selection.FormatConditions.Count).SetFirstPriority()              
            wb.ActiveSheet.Columns("F:AA").FormatConditions(1).Font.Bold = True            
            wb.ActiveSheet.Columns("F:AA").FormatConditions(1).Interior.Color = 8420607                       
            wb.ActiveSheet.Columns("F:AA").FormatConditions(1).StopIfTrue = False 
            wb.ActiveSheet.Columns("F:AA").FormatConditions.Add(win32c.xlCellValue , win32c.xlGreaterEqual , formula2)             
            #wb.ActiveSheet.Columns("F:AA").FormatConditions(excel.Selection.FormatConditions.Count).SetFirstPriority()              
            wb.ActiveSheet.Columns("F:AA").FormatConditions(2).Font.Bold = True          
            wb.ActiveSheet.Columns("F:AA").FormatConditions(2).Interior.Color = 10092543                       
            wb.ActiveSheet.Columns("F:AA").FormatConditions(2).StopIfTrue = False 

Upvotes: 1

Related Questions