ae mano tenta ai ------------------------------------------------------------------------------------------------------------------------------------- Dim area As Range, intervalo As Range ' o problema é que o intervalo fica fixo, portanto jogue dentro de uma variavel o intervalo desejado. ' por exemplo: Selection, Selection.End(xlToRight)) é igual a ctrl+shift seta pro lado, e a outra seta pra baixo Set area = Union(Range(Selection, Selection.End(xlToRight)), Range(Selection, Selection.End(xlDown))) area.Select ActiveWorkbook.Names.Add Name:="intervalo", RefersToR1C1:=area ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "intervalo").CreatePivotTable TableDestination:="", TableName:= _ "Tabela dinâmica1"