 <p>There are a few ways to loop through the worksheets in a workbook. I prefer the worksheet index method which simply identifies the worksheet according to its position in the worksheet queue.</p> <pre><code>Sub ExpirationYeartoColors() Dim w As Long, lr As Long, r As Long, vVAL As Variant For w = 1 To Worksheets.Count With Worksheets(w) lr = .Cells(Rows.Count, "A").End(xlUp).Row For r = 2 To lr vVAL = .Range("A" &amp; r) If IsNumeric(vVAL) Then 'treat numbers as numbers!!! vVAL = Int(vVAL) 'maybe vVAL = Year(vVAL) ? Select Case vVAL Case 2015 .Range("A" &amp; r).Interior.Color = RGB(181, 189, 0) Case 2016 .Range("A" &amp; r).Interior.Color = RGB(0, 56, 101) Case 2017 .Range("A" &amp; r).Interior.Color = RGB(0, 147, 178) Case 2018 .Range("A" &amp; r).Interior.Color = RGB(155, 211, 221) Case 2019 .Range("A" &amp; r).Interior.Color = RGB(254, 222, 199) Case 2020 .Range("A" &amp; r).Interior.Color = RGB(238, 242, 210) Case 2021 To 2080 .Range("A" &amp; r).Interior.Color = RGB(238, 242, 210) Case Else .Range("A" &amp; r).Interior.Pattern = xlNone End Select Else Select Case vVAL Case Is = "Unknown" .Range("A" &amp; r).Interior.Color = RGB(197, 200, 203) Case Is = "Available" .Range("A" &amp; r).Interior.Color = RGB(247, 150, 91) Case Is = "CommonArea" .Range("A" &amp; r).Interior.Color = RGB(230, 230, 230) Case Else .Range("A" &amp; r).Interior.Pattern = xlNone End Select End If Next r End With Next w On Error GoTo ErrorHandler ' Insert code that might generate an error here Exit Sub ErrorHandler: ' Insert code to handle the error here Resume Next End Sub </code></pre> <p>There are a number of unanswered questions; particularly about the nature of the data. However, you should be treating numbers as numbers especially if you want to use them in something like <code>Case "2020" To "2080"</code>. I've tried to determine the nature of the values and treated text and numbers separately. This compiles but with no sample data or answers to the comments posed I cannot guarantee its validity.</p> <p>Setting the <em>.pattern</em> to xlNone removes the interior fill rather than painting it white.</p> <p>See <a href="http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros">How to avoid using Select in Excel VBA macros</a> for more methods on getting away from relying on select and activate to accomplish your goals.</p>