The issue is that you never set the variable "re" or "c" to anything. You really should declare all of your variables before using them to help reduce bugs. Try something like this:
Sub FindLoop()
Dim prevSheet as Worksheet
Dim rng As Range
Dim fnd As Variant
Dim i As Long
prevSheet = ActiveSheet
Sheets(1).Select
'Column T - UsedRange
Set rng = Sheets(1).Range(Cells(1, 20), Cells(ActiveSheet.UsedRange.Rows.Count, 20))
On Error GoTo Not_Found
i = rng.Find("REQM", LookIn:=xlFormulas, LookAt:=xlWhole).Row
On Error GoTo 0
With rng
Set fnd = .Find("REQM", LookIn:=xlFormulas, LookAt:=xlWhole)
Do
Set fnd = .FindNext(fnd)
Call FindEntryArea
MsgBox (fnd.Row)
Loop While i < fnd.Row
End With
prevSheet .select
Exit Sub
Not_Found:
MsgBox """REQM"" not found."
prevSheet.Select
Exit Sub
End Sub
Edit: I modified the code you posted and it runs correctly for me.
Option Explicit
Public d As Variant
Public re As Range
Sub MainCode()
Dim r As Range
Set re = Worksheets("Summary all PIIDB").Range("T:T")
Set r = Worksheets("Summary all PIIDB").UsedRange
With r
Call FindLoop
End With
End Sub
Sub FindLoop()
On Error GoTo Not_Found
With re
Set d = .Find("REQM", LookIn:=xlFormulas, LookAt:=xlWhole)
MsgBox (d.row)
'Call FindEntryArea
Set d = .FindNext(d)
MsgBox (d.row)
'Call FindEntryArea
End With
On Error GoTo 0
Exit Sub
Not_Found:
MsgBox ("REQM not found!")
Exit Sub
End Sub