I don;t know if this is the sort of thing you want to be doing, but, I am in the middle of developing pivot tables based on dynamic ranges too, take a look at this. Here I have actually made the dynamic range into an array and looped to create the table, take a look
Set rngcolhead = Range(Cells(1, p), [IV1].End(xlToLeft))
z = rngcolhead.Cells.count
arrcolhead = rngcolhead
For k = 1 To z Step 1
Debug.Print arrcolhead(1, k)
Application.StatusBar = "Calculating pivot field " & k & " of " & z
Application.Calculation = xlManual
Sheets("PivotSheet").Select
With ActiveSheet.PivotTables("PivotTable1").PivotFields(arrcolhead(1, k))
.Orientation = xlDataField
.Function = xlSum
.Caption = "Sum of " & arrcolhead(1, k)
.Position = k
End With
Next k
Hope this helps,
RET79