Olá pessoal! Pesquisei aqui no fórum e em toda a net sobre o erro que estou tendo e não encontrei uma solução.
No caso, não é um erro da criação do código, pois ele funciona 1 vez, mas quando dá o loop não funciona mais . Não tem variáveis erradas, nem variáveis não declaradas. As variáveis estão se comportando como deveriam.
O erro é, na verdade, quando eu peço para o código: "On Error GoTo SelecionarVazio" (na primeira passagem pelo código com erro, que será gerado ás vezes), ele vai para a tratativa do erro, mas na segunda passagem pelo código com erro ele aparece a tela com o erro pra mim, ou seja, o erro não é tratado.
Regras da planilha:
- Na aba "BANCO DE DADOS" a primeira linha tem que ser daquele jeito (com o cabeçalho "CLIENTE AGRUPADOR" em branco), pois a tratativa de erro do meu código é justamente definir "(vazio)" para o campo em questão da Tabela Dinâmica.
- Na célula B1 das abas numéricas está escrito o nome do cliente que eu devo escolher na Tabela Dinâmica, mas pode acontecer (e vai!) de eu não ter despesas para aquele cliente, por isso que o código vai dar um erro e eu o trato trazendo "(vazio)" quando dá o erro.
O código segue abaixo e a planilha está em anexo.
No mais, agradeço a força de sempre!!!
Sub Atualizar_Tab_Din()
Dim Counter As Integer
Dim Current As Integer
Dim TD As PivotTable
Dim NomeCliente As Variant
'Application.ScreenUpdating = False
Counter = ActiveWorkbook.Worksheets.Count
For Current = 1 To Counter
If ActiveWorkbook.Worksheets(Current).Name = "2" Then
Do While Current <= Counter
On Error GoTo SelecionarVazio
ActiveWorkbook.Worksheets(Current).Activate
NomeCliente = Worksheets(ActiveWorkbook.Worksheets(Current).Name).Cells(1, 2).Value
For Each TD In ActiveSheet.PivotTables
ActiveSheet.PivotTables(TD.Name).PivotFields("CLIENTE AGRUPADOR").ClearAllFilters
ActiveSheet.PivotTables(TD.Name).PivotFields("CLIENTE AGRUPADOR").CurrentPage = NomeCliente
ActiveSheet.PivotTables(TD.Name).PivotFields("CLIENTE AGRUPADOR").EnableMultiplePageItems = False
GoTo NextTable
SelecionarVazio:
ActiveSheet.PivotTables(TD.Name).PivotFields("CLIENTE AGRUPADOR").CurrentPage = "(blank)"
NextTable:
Next TD
Current = Current + 1
Loop
End If
Next Current
'Application.ScreenUpdating = True
Worksheets("BANCO DE DADOS").Select
Range("A1").Select
End Sub
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 06/05/2013 2:05 pm