Try something like this - amend the array of button names to match your actual sheet:
Sub Add_Row_Field()'Author: Jon Acampora, Excel Campus
'Swaps out Row Fields, via a button that has the macro assigned to it
'Remove all Row fields and add the Row field to the pivot table.
'The field is determined by the button text that calls the macro (i.e. name the button with the EXACT name of the Field that it's assigned to)
Dim pt As PivotTable
Dim pf As PivotField
Dim sField As String
Dim buttonNames
buttonNames = Array("Button 1", "Button 2", "Button 3") ' <-- Change these names to match your actual buttons
Dim thisButton As String
thisButton = Application.Caller
For Each pt In ActiveSheet.PivotTables
'Set variables
sField = ActiveSheet.Shapes(thisButton).TextFrame.Characters.Text
'Remove existing fields
For Each pf In pt.RowFields
If pf.Name <> "Structure Level 02" Then
' This is the line that makes the Level 2 Row Field stay in place
End If
Next pf
'Add field that button was clicked for
pt.PivotFields(sField).Orientation = xlRowField
pt.PivotFields(sField).Position = 1
Next pt
' change button brightness
Dim nm
For Each nm In buttonNames
With ActiveSheet.Shapes(Application.Caller)
If nm = thisButton Then
.Fill.ForeColor.Brightness = 0.5
Else
.Fill.ForeColor.Brightness = 0
End If
End With
Next nm
End Sub