I have two subs called FindTempRow and FindBatchRow
Sub FindTempRow()  
    With Worksheets("TEMPLATES").Range("G:G")
        Set t = .Find("Template", LookIn:=xlValues)
        If Not t Is Nothing Then
            FirstAddress1 = t.Address
            Do
                Call FindBatchRow
                Set t = .FindNext(t)
            Loop While Not t Is Nothing And t.Address <> FirstAddress1
        End If
    End With
End Sub
Sub FindBatchRow()
        With Worksheets("DISTRIBUTION LIST").Range("C:C")
            Set d = .Find(BatchNo, LookIn:=xlValues)
                If Not d Is Nothing Then
                    FirstAddress2 = d.Address
                    Do
                        Set d = .FindNext(d)
                    Loop While Not d Is Nothing And d.Address <> FirstAddress2
                End If
        End With
End Sub
FindTempRow is calling FindBatchRow inside a Do While Loop.
The problem is whenever I run the code it gives me an error: Runtime Error Code (91) Object Variable or With Block variable not set
The code that gives an error is located in FindTempRow:
Loop While Not t Is Nothing And t.Address <> FirstAddress1
I tried removing call FindBatchRow in Sub FindTempRow and it runs fine. It seems my code is forgetting the address value of t whenever another find method is called in sub FindBatchRow
SOLUTION: by @Rory
REPLACE: Set t = .FindNext(t) from Sub FindBatchRow
WITH: Set t = .Find("Template", After:=t, LookIn:=xlValues)
 
     
     
    