title: How to control Excel PIVOT tables from cell values with VBA
body: <p>I'm trying to refresh my pivot table base on two cell values.  End user will type in value in cell B4 (Region) and value in cell B5 (Department). Pivot table would refresh base on these values.</p>
  
  <p>I found code below, but only allows for referencing 1 cell value. Not sure how to modify it for 2 cell values.</p>
  
  <pre><code>Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  
      'This line stops the worksheet updating on every change, it only updates when cell
      'B4 or B5 is touched
  
      If Intersect(Target, Range("B4:B5")) Is Nothing Then Exit Sub
  
      'Set the Variables to be used
      Dim pt As PivotTable
      Dim Field As PivotField
      Dim NewCat As String
  
      'Here you amend to filter your data
      Set pt = Worksheets("Sheet1").PivotTables("PivotTable1")
      Set Field = pt.PivotFields("Region")
      NewCat = Worksheets("Sheet1").Range("B4").Value
  
      'This updates and refreshes the PIVOT table
      With pt
          Field.ClearAllFilters
          Field.CurrentPage = NewCat
          pt.RefreshTable
      End With
  
  End Sub
  </code></pre>