Range(...) instructs VBA to always use the ActiveSheet. You must instruct VBA to work on worksheet ws in order to achieve the desired result: ws.Range (...).
Moreover, Select and Selection are not necessary (and you should avoid using them because they are rarely necessary): Instead, either use a With-clause or assign the Range to a variable and use that:
For Each wsName In wsList
Set ws = ThisWorkbook.Sheets(wsName)
' Option a) Use a Variable
Dim myRange as Range
Set myRange = ws.Range("A4:C7,L4:Q5,L6:L7,S24:U27,AD24:AF27,AO28:AR29,AO26:AO27")
With myRange.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
' Or, without With
myRange.Interior.Pattern = xlNone
myRange.Interior.TintAndShade = 0
myRange.Interior.PatternTintAndShade = 0
' Option b) Use With directly with intermediate variable
With ws.Range("B4:C7,M4:Q5,T24:U27,AE24:AF27,AP28:AR29")
.Locked = False
.FormulaHidden = False
End With
ws.Range("O31:AF34").FormulaR1C1 = "FALL"
Next wsName