You need to specify the worksheet when you referring to a range. Give this a try
Sub test()

Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
    If IsEmpty(ws.Range("a1").Value) = False Then 'If range A1 is /not/ empty, then perform these loops
        
        Dim c As Range
        ws.Range("d3:x115").Name = "Rng"
            For Each c In ws.Range("Rng")
                If c.Interior.Color = RGB(166, 77, 121) Then 'If it’s colored then
                    If c Like "*#*" Then c.Offset(, 5) = c + 1 'check if has a date entered
                        If c.Offset(, 5).Interior.ColorIndex = xlNone Then c.Offset(28, -20) = c + 3 'if no fill then go to next week
                    End If
                
                Next
    ws.Range("d143").ClearContents
    On Error Resume Next 'If range A1 /is/ empty, then go to the next worksheet
End If
Next ws

End Sub