You can do this if you loop. It takes (very slightly ) longer to loop through shapes but you won't notice unless there are hundreds of shapes.

You problem will be the default name for rectangles is Rectangle x so wildcard may not be a good idea. You can easily act of all Rectangles though

Sub change_Allrect()
Dim osld As Slide
Dim oshp As Shape
Dim strText As String
For Each osld In ActivePresentation.Slides
If osld.Shapes.HasTitle Then
strText = osld.Shapes.Title.TextFrame.TextRange.Text
If InStr(UCase(strText), "JOHN") > 0 Then
On Error Resume Next
For Each oshp In osld.Shapes
If oshp.Type = msoAutoShape Then
If oshp.AutoShapeType = msoShapeRectangle Then
oshp.Fill.ForeColor.RGB = vbRed
End If 'rectangle
End If 'autoshape
Next oshp
End If
End If
Next osld
End Sub