If you look you'll see that I noted that in my post. I believe you're going to find that a Query is the only way you can do this. These numbers have to be Bound to something; Unbound Controls in Continuous Forms all display the same Value. And since the numbers will change, depending on the Records in the underlying set, each time the Form is opened, they have to be re-calculated each time, and this can only be done, to my knowledge, using a Query....I checked the given Links and found some variants, but they're query based.
'Copyright Stephen Lebans 1999 'May not be resold 'Please include my 1 line Copyright notice 'in your code if you use these functions 'I left a bunch of development code in here in case anyone decides to go 'down the same paths I did. 'Created by Stephen Lebans with help from Chris Bergmans ' Updated by Allen Browne Oct/2002 'Production version of GetLineNumberForm 'Works in Form or SubForm mode 'Set controlsource of unbound Text box to '= RowNum([Form]) 'Type exactly as above Public Function RowNum(frm As Form) As Variant On Error GoTo Err_RowNum 'Purpose: Numbering the rows on a form. 'Usage: Text box with ControlSource of: =RowNum([Form]) With frm.RecordsetClone .Bookmark = frm.Bookmark RowNum = .AbsolutePosition + 1 End With Exit_RowNum: Exit Function Err_RowNum: If Err.Number <> 3021& Then 'Ignore "No bookmark" at new row. Debug.Print "RowNum() error " & Err.Number & " - " & Err.Description End If RowNum = Null Resume Exit_RowNum End Function