How does this work?

L

leimst

Can anyone interpret this code for me to explain the logic in how it works.
I've run it and can see the results but I still don't understand the logic
used that makes this small amount of code do so much!

Sub x()

Dim c As Long

With Sheet1
.AutoFilterMode = False
For c = 3 To .Cells(1, 1).End(xlToRight).Column
.Range("A1").AutoFilter Field:=c, Criteria1:="X"
Sheets.Add(after:=Sheets(Sheets.Count)).Name = Left(.Cells(1,
c), 31)
.AutoFilter.Range.Resize(, 2).Copy ActiveSheet.Range("A1")
.ShowAllData
Next c
.AutoFilterMode = False
End With

End Sub

Thanks,

Brian
 
J

joel

See comments. the code is filtering each column in sheet 1 starting in
column 3 ("C") looking for the X in each column. Then copying columns A:B to
a new worksheet. The new worksheet is named the column Header in row 1. The
code is naming the new worksheet the 1st 31 letters of the Header in the
column.

Sub x()

Dim c As Long

With Sheet1
'turn oiff all autofilter on worksheet
.AutoFilterMode = False
'look at all columns where there data in row 1
'start at column 3 and move to last column with data
'C is the column Number starting at 3
For c = 3 To .Cells(1, 1).End(xlToRight).Column
'auto filter column C - the filed is the column
.Range("A1").AutoFilter Field:=c, Criteria1:="X"
'add new workshee to workbook
'the sheet name is the 1st 31 chaaracter in row 1, column C
Sheets.Add(after:=Sheets(Sheets.Count)).Name = Left(.Cells(1,
c), 31)
'copy the first two columns of the autofiler rows
'to the new worksheet
.AutoFilter.Range.Resize(, 2).Copy ActiveSheet.Range("A1")
'remove the autofilter
.ShowAllData
Next c
.AutoFilterMode = False
End With

End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top