Steven,
I think I understand what you're trying to achieve, though your posted code doesn't seem to make sense. For instance, why are you comparing an array of strings with a single date? Also date literals are either represented by cdate("1 March 2005") or #03/01/05# [no quotes] - typing in 1 March 2005 on its own would produce a compile error. Secondly, I would iterate through the database recordset rather than through the months.
As I said, I don't fully understand what you're doing, though below is a function I hope will help:
Public Function CanRecordBeDeleted(ByVal strRecordDate As String) As Boolean
' Inputs: A string date
' Outputs: True or false
' True: Date occurs in last month or prior
' False: Date occurs this month or later
'
' Why don't we just compare the vba.month() of each date?
' Well consider that today is sometime in january and the date
' in question is in december: in this case january comes after
' december despite the fact 1 is not less than 12. So the way
' this function works is to store two dates, the date that
' the month strRecordDate is in begins (e.g. if it was the 15/2/05
' datStartOfMonth would be 1/2/05, and the date that the month
' today is in begins. VB then handles all the other date problems
'
Dim datRecordDate As Date
' Used to hold the date in "VB" form
Dim datStartOfMonth As Date
' Date rolled back to the start of the month
Dim TodayStartOfMonth As Date
' Today rolled back to the start of the month
datRecordDate = CDate(strRecordDate)
datStartOfMonth = VBA.DatePart("m", datRecordDate)
TodayStartOfMonth = VBA.DatePart("m", VBA.Now())
' This built in VB function rounds down to the start of the month
If datStartOfMonth < TodayStartOfMonth Then
CanRecordBeDeleted = True
Else
CanRecordBeDeleted = False
End If
End Function