В качестве рекомендации: вместо циклического прохождения каждой ячейки в каждом диапазоне вы можете просто создать один объект диапазона, который включает все диапазоны, и искать соответствующие ячейки в этом диапазоне:
Sub SetTelSlot()
Dim c As Range, DRng As Range
Dim firstfound As String
With ActiveSheet
Set DRng = Union( _
.Range("E7:AB33"), _
.Range("E45:AB71"), _
.Range("E82:AB108"), _
.Range("E119:AB145"), _
.Range("E156:AB182") _
)
End With
With DRng
Set c = .Find("1", LookIn:=xlValues)
If Not c Is Nothing Then
firstfound = c.Address
Do
' action
With c
.Font.Bold = SetBold
.Font.Color = vbBlack
.Value = "T"
With .Interior
.pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = RGB(0, 204, 153)
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End With
' find next
Set c = .FindNext(c)
If c Is Nothing Then
Exit Do
End If
Loop While c.Address <> firstfound
End If
End With
End Sub
Метод FindNext
переходит в начало диапазона после достижения его конца; поэтому первый соответствующий адрес сравнивается с завершением цикла.