Eu não gosto de deixar perguntas sem resposta quando elas já foram respondidas, ele comenta. Você pode ler a história nos comentários, mas aqui está a solução final:
Private Sub Worksheet_Calculate()
'If the active sheet is called "Strategies", then this reapplies the filter for two tables and re-sorts them
Const wsName As String = "Strategies"
If ActiveSheet.Name = wsName Then
'Freeze everything and turn off events
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
End With
'Update Table2
With Worksheets(wsName).ListObjects("Table2")
.AutoFilter.ApplyFilter
With .Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
'Update Table3
With Worksheets(wsName).ListObjects("Table3")
.AutoFilter.ApplyFilter
With .Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
'Unfreeze things and turn events back on
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
End With
End If
End Sub
Você provavelmente poderia encurtar a filtragem e a classificação para apenas
With Worksheets(wsName).ListObjects("Table2")
.AutoFilter.ApplyFilter
.Sort.Apply
End With
Este é um wiki da comunidade porque eu não obtive a solução. Você pode editá-lo se quiser, mas tudo que fiz foi transcrever o problema encontrado nos comentários e limpar o código um pouco.