I made a new form and copied all the controls and procedures to it. Form_Load() fired first then Form_Current().
Form_Current had only the following:
MsgBox("Form_Current"
I then added the following code:
MsgBox("Form_Current"

intI = 0
Do While intI <= intAttributeCount
If Me!Attribute1 = arrayAttributes(intI) Then
MsgBox("Found It"

intI = intI+1
Exit Do
End If
Loop
End Sub
intAttributeCount and arrayAttributes were set in Form_Load() but declared in General Declarations as:
Dim arrayAttributes() As String
Public intAttributeCount As Integer
It then went back to firing in the order Form_Current(), Form_Load(), Form_Current(), giving me an error becuase arrayAttributes had a subscript of of range (because it was filled in Form_Load).
Removing the newly added code (leaving only MsgBox("Form_Current"

didn't change the firing order; it remains Form_Current(), Form_Load(), Form_Current().
I now have a boolean in Form_Current to check if this is the very first firing of Form_Current, to skip over doing the code; its not a very elegant solution, but it is working.
Charlie