There is no reason to loop on the number of columns. Based on your posted code you are only modifying the Cell in column 1.

Your Do Loop will never end because the current column is always 1. Why are you even using a Do Loop?

Another possible error that I can see is that if the grid cell is an empty string then the line NumAbs = CInt(Absences)
will fail with a type mismatch error.

VB Code:
  1. With fgMonthA3rd
  2.     .Redraw = False
  3.     .Col = 1
  4.  
  5.     For i = 1 To .Rows - 1
  6.  
  7.         Absences = .TextMatrix(i,1)
  8.         NumAbs = CInt("0" & Absences)  
  9.  
  10.         'Or even NumAbs = CInt("0" & .TextMatrix(i,1))  and remove the Absences = .TextMatrix(i,1) statement
  11.  
  12.  
  13.         If NumAbs >= 2 Then
  14.            .Row = i
  15.            .CellBackColor = vbRed
  16.         End If
  17.  
  18.     Next
  19.     .Redraw = True
  20. End With
Sorry, I did not have time to test this code but it should work.