Попробуйте
Sub Delete_EntireColumn()
Dim LCol as Long, LRow as Long, i as Long
With Workbooks(REF).Sheets(REF)
LCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
For i = LCol To 1 Step - 1
LRow = .Cells(.Rows.Count, i).End(xlUp).Row
If LRow < 30 Then
.Columns(i).EntireColumn.Delete
End If
Next i
End With
End Sub
РЕДАКТИРОВАТЬ
Если строки заполнены не последовательно:
Sub Delete_EntireColumn()
Dim LCol as Long, LRow as Long, i as Long
With Workbooks(REF).Sheets(REF)
LCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
For i = LCol To 1 Step - 1
LRow = Application.WorksheetFunction.CountA(.Columns(i))
If LRow < 30 Then
.Columns(i).EntireColumn.Delete
End If
Next i
End With
End Sub