Two important things to note when adding fields to a Pivot Table are Orientation and Position. Sometimes a developer may assume where a field is placed, so it's always clearer to explicitly define these parameters. These actions only affect the given Pivot Table, not the Pivot Cache.
Dim thisPivot As PivotTable
Dim ptSheet As Worksheet
Dim ptField As PivotField
Set ptSheet = ThisWorkbook.Sheets("SheetNameWithPivotTable")
Set thisPivot = ptSheet.PivotTables(1)
With thisPivot
Set ptField = .PivotFields("Gender")
ptField.Orientation = xlRowField
ptField.Position = 1
Set ptField = .PivotFields("LastName")
ptField.Orientation = xlRowField
ptField.Position = 2
Set ptField = .PivotFields("ShirtSize")
ptField.Orientation = xlColumnField
ptField.Position = 1
Set ptField = .AddDataField(.PivotFields("Cost"), "Sum of Cost", xlSum)
.InGridDropZones = True
.RowAxisLayout xlTabularRow
End With