Blog

Postado em em 6 de agosto de 2021

Finalização da Série e Dicas de Utilização – Bolsa de Valores

Nessa aula vamos fazer a finalização da série e vamos te dar algumas dicas de utilização da planilha completa para que possa utilizar de forma eficiente!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo!

Para receber a planilha que usamos na aula no seu e-mail, preencha:

Fala Galera! Essa é a aula de número 50 da nossa Série Controles para Bolsa de Valores!

Essa é a nossa última aula dessa série então vamos fazer alguns ajustes finais e dar algumas explicações da planilha.

Aqui vamos fazer alguns ajustes na planilha para que ela funcione mesmo quando não tenha nenhuma informação, pois você vai utilizar a planilha zerada, então ela precisa estar funcionando.

Ajustes de fórmulas

a) Aba Opções

Na coluna ativo (D), vamos acrescentar a fórmula ÚNICO no começo para ter os ativos de forma a tê-los sem repetição.

Além disso, além de citar os ativos que não queríamos pegar, vamos citar apenas os que queremos. Assim a fórmula fica mais enxuta e objetiva.

Por fim, acrescentaremos uma condição de alternativa de resultado de erro dado pela fórmula. As aspas duplas destacadas em negrito abaixo representam o resultado “vazio” ao invés de erro para essa fórmula.

Observe abaixo a fórmula colocada na célula D2, e o destaque para as mudanças:

=CLASSIFICAR(ÚNICO(SUBSTITUIR(FILTRO(TabelaMovimentacoes[[Descrição]:[Tipo]];(TabelaMovimentacoes[Tipo]=”Ação”)+(TabelaMovimentacoes[Tipo]=”ETF”)+(TabelaMovimentacoes[Tipo]=”FII”)+(TabelaMovimentacoes[Tipo]=”BDR”)+(TabelaMovimentacoes[Tipo]=”Opção”)+(TabelaMovimentacoes[Tipo]=”Futuro”)+(TabelaMovimentacoes[Tipo]=”Termo”);””);”.N”;“”)))

b) Vamos levar essa fórmula para as abas de Cotações (célula A2) e para a aba de Resumo (célula A2 também), com uma leve alteração (considerando apenas a descrição da tabela movimentações):

=CLASSIFICAR(ÚNICO(SUBSTITUIR(FILTRO(TabelaMovimentacoes[[Descrição];(TabelaMovimentacoes[Tipo]=”Ação”)+(TabelaMovimentacoes[Tipo]=”ETF”)+(TabelaMovimentacoes[Tipo]=”FII”)+(TabelaMovimentacoes[Tipo]=”BDR”)+(TabelaMovimentacoes[Tipo]=”Opção”)+(TabelaMovimentacoes[Tipo]=”Futuro”)+(TabelaMovimentacoes[Tipo]=”Termo”);””);”.N”;””)))

c) Aba Resumo

Na coluna ativos prejuízo (S), vamos colocar a seguinte fórmula:

=FILTRO(N2:Q1048576;(O2:O1048576<>””)*SEERRO((O2:O1048576+Q2:Q1048576)<>0;0))

Ela vai produzir um resultado alternativo, caso o que estiver nas colunas O e Q sejam vazias. O resultado de erro se transformará em zero (0).

Gerenciador de Nomes

Precisaremos adaptar os nomes antigos dados para a células/intervalos da aba Resumo.

As fórmulas dos nomes agora vão levar em consideração as primeiras células de dados referente a cada coluna (U, S, V, T), considerando a lista de valores existentes.

Havendo mais de um valor, o deslocamento de tamanho do intervalo será respectivamente do tamanho da quantidade de valores daquela coluna.

Não havendo nenhum valor, o tamanho do intervalo será colocado como padrão de valor sendo 1, para interpretar apenas as células U2, S2, V2 e T2.

Observe os nomes e suas respectivas novas fórmulas:

a) Ativos Lucro

=DESLOC(Resumo!$U$2;;;MÁXIMO(CONT.VALORES(Resumo!$U:$U)-1;1))

b) Ativos Prejuízo

=DESLOC(Resumo!$S$2;;;MÁXIMO(CONT.VALORES(Resumo!$S:$S)-1;1))

c) Intervalo Lucro

=DESLOC(Resumo!$V$2;;;MÁXIMO(CONT.VALORES(Resumo!$V:$V)-1;1))

d) Intervalo Prejuízo

=DESLOC(Resumo!$T$2;;;MÁXIMO(CONT.VALORES(Resumo!$T:$T)-1;1))

Ajustar a primeira linha da tabela (linha_mov) na macro incluir_nota

Vamos substituir a linha de código abaixo em toda a macro de incluir_nota (inteira), em todas as aparições.

Assim, registraremos sempre a nota na linha correta: se houver algo na planilha, pegará a última linha preenchida + 1; caso não haja, registrará na quarta linha da aba.

Acompanhe:

Substituir:

                linha_mov = Sheets("Movimentações").Range("A1000000").End(xlUp).Row + 1

Por:

            If Sheets("Movimentações").Range("A4") = "" Then

                linha_mov = 4

            Else

                linha_mov = Sheets("Movimentações").Range("A1000000").End(xlUp).Row + 1

            End If

Executar código em VBA mais rápido (mudar em todas as macros)

Vamos acrescentar 4 linhas em todas as macros da nossa planilha, sendo 2 no começo, e duas ao final.

Essas linhas vão fazer a desativação da atualização de tela no começo e ativação ao final do código, assim como desativação do cálculo das fórmulas no começo e ativação ao final da macro.

Acompanhe:

Sub exemplo()

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

‘codigo

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

End Sub

Além dessa modificação nas macros, vamos substituir em todas as macros, e nos dois módulos, como mostrado no vídeo:

Substituir: Exit Sub

Por: GoTo Fim

Incluir antes das linhas de desativação de tela e ativação de cálculos da planilha: Fim:

O final das macros ficará algo parecido como o seguinte:

Fim:

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

End Sub

Macro evento da aba de Resumo

Vamos fazer algumas mudanças na macro de ativação da aba Resumo.

Agora ela vai excluir fórmulas a mais deixadas de forma errada, e ao mesmo tempo se precisar vai ajeitar as fórmulas se tiver menos linhas de fórmulas e mais ativos preenchidas na aba de cotações.

Abaixo temos o código final mostrado em vídeo:

Private Sub Worksheet_Activate()

linha_a = Sheets("Cotações").Range("A1048576").End(xlUp).Row
linha_b = Sheets("Cotações").Range("B1048576").End(xlUp).Row

If linha_a > linha_b Then  

   Sheets("Cotações").Range("B2").Formula2Local = "=SEERRO(HISTÓRICODEAÇÕES(A2;HOJE();;;0);SEERRO(HISTÓRICODEAÇÕES(A2;HOJE()-1;;;0);SEERRO(HISTÓRICODEAÇÕES(A2;HOJE()-2;;;0);SEERRO(HISTÓRICODEAÇÕES(A2;HOJE()-3;;;0);HISTÓRICODEAÇÕES(A2;HOJE()-4;;;0)))))"

    If linha_a > 2 Then
 
       Sheets("Cotações").Range("B2:B" & linha_a).FillDown

   End If

ElseIf linha_a < linha_b Then


    Sheets("Cotações").Range("B" & linha_a + 1 & ":B" & linha_b).Delete shift:=xlUp  

End If

End Sub

Conclusão da Finalização da Série e Dicas de Utilização

Nos ajustes realizados na aula de hoje, pudemos ter contato novamente com a função SUBSTITUIR, a função FILTRO, a função DESLOC.

Fizemos também alguns ajustes nas macros utilizando a função IF.

Vimos também como executar código em VBA mais rápido. Isso mesmo, como deixar macro mais rápida com 4 linhas de código.

Outro ponto importante que pudemos abordar nessa aula depois de deixar o código mais rápido foi a utilização do GoTo no VBA para certificar de que os cálculos ficarão automáticos caso você feche alguma macro sem terminar de preencher as informações!

Finalmente fechamos as aulas da nossa série! Fique ligado no nosso canal do Youtube para mais conteúdo de Excel e VBA toda semana! Um abraço!

Hashtag Treinamentos

Para acessar outras publicações de VBA, clique aqui!


Quer aprender mais sobre VBA com um Minicurso Gratuito?


Quer participar do maior evento de Power BI da América Latina de forma 100% Online e Gratuita? Inscreva-se abaixo!