Should this
Code:
str = Sheet1.Cells(r, qCol).Value
be this
Code:
str = Sheet1.Cells(r, CurrentQCol).Value
?
I don't see where you're changing qCol within the loops