Is this really your code? There is no End Sub for the current event sub.
If there isn't even an embedded macro (and I'm guessing there isn't based on the name returned (True)) then try a compact and repair in case it's a simple matter of corruption.
If that doesn't help, since it's a small piece of code, try putting line numbers on each potential line that could be generating the error. It's likely the sub (which seems to have an extra space after '9', but hard to tell for sure in the posted code. Add an error handling routine at the start and msgbox.Erl to get the line number generating the error. It could be that the variable is not as global as you think. Why would this not just be at the module level as opposed to being global in scope. I'm assuming you know the difference between global, module level and form level scope as opposed to procedure level scope.
Code:
Private Sub Form_Current()
On Error GoTo errHandler
10 If NoCurrent = True Then
20 NoCurrent = False
30 Exit Sub
40 End If
50 Call Test9
60 Exit Sub
errHandler:
msgbox "Current Event failed on line" & Erl
END SUB
Sub Test9 ()
On Error GoTo errHandler
10 NoCurrent = True
20 DoCmd.GoToRecord , , acNext
30 NoCurrent = True
40 DoCmd.GoToRecord , , acPrevious
50 Exit Sub
errHandler:
msgbox "Test 9 failed on line " & Erl
End Sub