Cálculo Automático ...
 
Notifications
Clear all

Cálculo Automático (ActiveSheet.Calculate)

6 Posts
3 Usuários
0 Reactions
2,069 Visualizações
(@fafsleite)
Posts: 0
New Member
Topic starter
 

Prezados,

Boa noite!

Fiz uma tabela que faz a contagem de células preenchidas com cores.

Criei um módulo para gerar uma função CountColor e com ela consigo fazer a contagem de cores que cada célula tem.
Faz o cálculo normalmente quando termino a fórmula ou edito (F2) e dou enter, mas se fechar a planilha e abrir novamente não faz o cálculo.d

Tentei colocar na Planilha o comando ActiveSheet.Calculate, mas acontece o mesmo. Quando coloco e volto para a planilha está calculando normalmente.
Quando salvo, fecho e abro novamente, nada! A não ser que vá novamente Em Exibir Código, tirar a opção ActiveSheet.Calculate, e colocar novamente.

Tem algo a mais que necessito fazer para que faça o cálculo automaticamente.

Segue um exemplo em Anexo.

Atenciosamente,
Flávio Leite®.

 
Postado : 31/10/2015 9:00 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Troque a instrução na rotina do Evento Worksheet_SelectionChange

'Esta ;
' ActiveSheet.Calculate

Por esta
Worksheets("Plan1").Calculate

 
Postado : 31/10/2015 9:24 pm
(@fafsleite)
Posts: 0
New Member
Topic starter
 

Prezado Mauro Coutinho,

Também não deu certo!

Ao fazer a troca, funciona tudo bem. Basta fechar e salvar, e não funciona mais.

Pode ser algum erro no meu Excel?

No aguardo!

Flávio Leite®.

 
Postado : 31/10/2015 9:38 pm
(@mprudencio)
Posts: 0
New Member
 

infelizmente isso e um "defeito" das UDFs.

 
Postado : 01/11/2015 6:50 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Adicione na Function o Metodo Application.Volatile, este metodo força o calculo em UDFs, eu testei e funcionou.

Function CountCcolor(range_data As Range, criteria As Range) As Long
    Dim datax As Range
    Dim xcolor As Long
    
    'Acrescente esta instrução
    Application.Volatile
    
    xcolor = criteria.Interior.ColorIndex
    For Each datax In range_data
        If datax.Interior.ColorIndex = xcolor Then
            CountCcolor = CountCcolor + 1
        End If
    Next datax
    
End Function

Veja mais a respetio:
Método Application.Volatile (Excel)
https://msdn.microsoft.com/pt-br/librar ... 95441.aspx

Excel VBA Application Volatile Method to force recalculate
http://access-excel.tips/excel-vba-appl ... -volatile/

 
Postado : 01/11/2015 3:39 pm
(@fafsleite)
Posts: 0
New Member
Topic starter
 

Puxa Mauro Coutinho,

Era isso mesmo a função que faltava.

O meu código é exatamente esse, só faltava o Application.Volatile.
Não conhecia essa função.

Muito obrigado de verdade!

Flávio Leite®.

 
Postado : 02/11/2015 12:35 pm