First, let's establish that you should have these two lines at the top of every module (the first has 3 possible settings, so your Access options may be set to provide you with a different option parameter). The second is a vb editor option that you REALLY should have turned on if you do not (Require Variable Declaration). What follows these two lines (sans comment) is a module level variable. Its scope is any code behind the report (or form if in a form module). Some caution is required when using them since their value is not only accessible throughout the module code, it is also possible to accidentally affect its value in this region. In your case, there should be little to be concerned about - this is just a little treatise on the scope of form/report module level variables.
Option Compare Database
Option Explicit
then have the next line
Dim bolNoData As Boolean
Then modify your NoData to set the variable to True IF this event runs.
Code:
Private Sub Report_NoData(Cancel As Integer)
Call Report_Load
MsgBox "No Report Available", vbOKOnly, "No Report"
Cancel = True
bolNoData = True
End Sub
Code:
Private Sub Report_Close()
If bolNoData = False Then
DoCmd.OpenForm "Navigation", acNormal
Else
DoCmd.OpenForm "Find Records", acNormal
End If
End Sub
You did not address why the load event is being called. This makes no sense to me, so I cannot predict the effectiveness of the proposed solution since I have no idea what to expect from making this call.