Попробуйте это.Кстати, вы пропустили точку перед диапазоном, которая вам нужна для вашего оператора With.
Sub clearContents()
Dim c As Range, c1 As Long
With Sheets("Main")
For Each c In .Range("B1:B23")
If c.Value = "x" Then
c1 = Cells(c.Row, Columns.Count).End(xlToLeft).Column
If c1 > 2 Then c.Offset(0, 1).Resize(, c1 - 2).clearContents
End If
Next c
End With
End Sub