*** Form Init event ** Only one column, there is no need this method to be executed for ALL columns thisform.Grid1.Column1.DynamicBackColor = [thisform.AllowGrid()] *** Form AllowGrid method LOCAL lnLastDay LOCAL lbAllowCellSelection lbAllowCellSelection = .t. *** Find the last day of the month. There are a lot of examples here in UT how to do this lnLastDay = LastDayOfMonth(some parameter) IF m.lnLastDay < Cursor.SomeField && I don't know how you store the 30 or 31 when the date is in Febr. lbAllowCellSelection = .f. ENDIF IF Cursor.ContractStarts > Cursor.SomeField && The same field as in above where you stores dates or day or? lbAllowCellSelection = .f. ENDIF IF OtherSpecialConditions lbAllowCellSelection = .f. ENDIF thisform.Grid1.AllowCellSelection = m.lbAllowCellSelection RETURN thisform.Grid1.Column1.BackColorAs I said this is not tested :-)