Not tested
I used Option Explicit
If you are not using Worksheet_Change or other events, you don't need to disable them
Sh is Dim-ed as a Worksheet
To avoid issues with empty strings, I like to use Len() = 0 as a check (it might be a 0 length string)
To avoid issues with a non-empty string that consists of spaces, I like to use Trim()
For number based WS looping, I've found it's easier for me to use .Cells(r, c) instead of something like Range("A" & i)
To answer your question, look at Next q and Next Sh below to see how a nested loop works
My thoughts
Option Explicit Sub RemoveBlankCells2() Dim strLR2 As String Dim q As Long Dim Sh As Worksheet For Each Sh In Sheets(Array("Fire", "FA Def", "FA NA", "Sprinkler", "Sprinkler Def", "Sprinkler NA", "Suppression", "Suppression Def", "Suppression NA", "Inspections")) With Sh strLR2 = .Range("A" & .Rows.Count).End(xlUp).Row For q = 2 To strLR2 If Len(Trim(.Cells(q, 9).Value)) = 0 Then .Cells(q, 9).ClearContents Next q End With Next Sh End Sub




Reply With Quote