Apostilas de VBA para download

Olá Pessoal!

Estou passando por aqui só para avisar que disponibilizei na barra lateral do blog três apostilas de VBA para download.

Criei essas apostilas quando trabalhava na diretoria de Controladoria da Oi, para dar aula de VBA para algumas pessoas da minha equipe.

Usando os ensinamentos dessas apostilas, vocês conseguirão otimizar bastante o Excel, criando planilhas bem interessantes!

Espero que esse material seja de grande utilidade, principalmente para aqueles que estão iniciando no mundo do VBA!!!!

 

Abs, Dr. Excel

Editor VBA (destaque: propriedade plan Visible)

Oi Pessoal!

Neste post vou mostrar a “cara” do Editor VBA!

Ao entrar no editor, que pode ser acessado clicando Alt+F11 no teclado, visualizamos as janelas do VBA, conforme figura abaixo.

 

 

No lado esquerdo da tela temos duas janelas:

 

Projeto – VBA Project: nessa janela são exibidos os vários elementos que fazem parte da pasta de trabalho atual. Aqui aparecem as planilhas e módulos da pasta de trabalho (arquivo.xls) carregada no Excel. Uma Macro pode ser criada em uma determinada planilha ou em Módulos. Estes últimos são utilizados para criar Funções e Procedimentos que podem ser chamados em todas as planilhas da pasta de trabalho atual.

Janela Propriedades: A janela abaixo da janela Project exibe as propriedades do elemento selecionado na janela Project. Por exemplo: ao selecionar Plan1 na janela Project, serão exibidas as propriedades desta planilha na janela logo abaixo, janela Propriedades, conforme figura a seguir.

Uma das propriedades das planilhas do Excel que vale a pena destacar aqui, é a propriedade Visible (abaixo em azul).

Esta propriedade possui três valores:

-1 – xlSheetVisible

0 – xlSheetHidden

2 – xlSheetVeryHidden

Os dois primeiros, -1 e 0, podemos acessar diretamente pelo Excel, correspondendo às opções Exibir e Ocultar planilhas. Já o terceiro (2 – xlSheetVeryHidden), só pode ser selecionado através do VBA e permite que ocultemos uma planilha sem que mesma seja visualizada pelo usuário de Excel como planilha Oculta! Ou seja, o usuário só percebe a existência da planilha entrando no VBA.

Por isso, acho que essa propriedade pode ajudar bastante o pessoal de Controladoria e Finanças, que trabalha com confidencialidade de informações, já que para acessar determinada planilha marcada com a propriedade 2, xlSheetVeryHidden, você precisaria acessar o editor do VBA, que, na minha opinião, possibilita maior segurança que os bloqueios do Excel.

Abs, Dr. E

P.S. Gostaria de pedir desculpas, mas infelizmente não estou conseguindo responder todos os e-mails com dúvidas que venho recebendo. Por isso, peço que não usem o espaço de comentários do post para enviar dúvidas.

Objetos VBA e propriedades Cells e Offset

Oi Pessoal!

Dando continuidade ao ensino da programação VBA, neste post vamos falar de Objetos de das propriedades Cells e Offset.

 

Objetos são as peças fundamentais para a composição de programas em VBA. Um objeto é um tipo especial de variável que contém dados e códigos.

Uma coleção é um grupo de objetos da mesma classe. Os objetos do Excel mais usados na programação em VBA são: Workbook, Worksheet, Sheet, e Range.

– Workbooks é a coleção de todos os objetos do tipo Workbook. O objeto Workbook representa arquivo Excel.

– O objeto Worksheet representa uma planilha.

– O objeto Range representa um intervalo de células.

A figura a seguir ilustra os objetos mencionados. O Workbook (arquivo Excel) é a Pasta1.xls. A Worksheet atual é Plan1. Duas Ranges estão selecionadas: Range B2 (uma célula) e B7:B11 (um conjunto de células).

A coleção Workbooks contém todos os arquivos Excel abertos no momento. Cada Workbook contém pelo menos uma Worksheet, que pode ser representada no VBA conforme abaixo:

Worksheets(“Sheet1”) ou Worksheets(1)

O trecho acima se refere à primeira Worksheet da coleção.

Importante: note que Worksheets(1) não é necessariamente a mesma planilha que Worksheets(“Sheet1”).

Para se referir a objetos com o mesmo nome, é necessário qualificá-los. Por exemplo:

Workbooks(“Book1”).Worksheets(“Sheet1”)

Workbooks(“Book2”).Worksheets(“Sheet1”)

Não estando o objeto identificado, aquele que estiver ativo no momento (por exemplo, Workbook ou Worksheet) será usado.

Como no VBA não existe o comando “Desfazer”. Sugiro que você sempre identifique os objetos no código de suas Macros, para não correr o risco de perder dados das suas planilhas.

Objeto Range e as Propriedades Cells e Offset:

 

O objeto Range representa uma célula, uma linha, uma coluna, ou conjunto contínuo o não de células. O exemplo de código a seguir coloca o texto “AB” no Range A1:B5 da planilha Plan2.

Worksheets(“Plan2”).Range(“A1:B5”) = “AB”

O exemplo abaixo coloca “AAA” nas células A1, A3 e A5 da Plan2.

Worksheets(“Plan2”).Range(“A1, A3, A5”) = “AAA”

Uma das principais propriedades do objeto Range é a propriedade Cells. Ela recebe dois índices como parâmetros, tendo a seguinte sintaxe: Cells(row, column) onde row é o índice da linha e column o da coluna.

A seguir, visualizaremos exemplos de uso desta propriedade.

1 – Repare que as três linhas de código abaixo são equivalentes.

ActiveSheet.Range.Cells(1,1)

Range.Cells(1,1)
Cells(1,1)

2 – Na sequência, verificamos duas linhas de código que geram o mesmo resultado.

 

Range(“A1”) = 123

Cells(1,1) = 123

3 – Agora o código abaixo coloca “ABC” em Cells(1,12) (o mesmo que Range(“L1”)), assumindo que a célula A1 é a ativa.

 

Cells(12) = “ABC”

4 – O trecho a seguir coloca “XYZ” na célula C3.

 

Range(“B1:F5”).cells(12) = “XYZ”

Importante: como no Excel, programando em VBA, é possível criar um Range selecionando células não contíguas. Basta usarmos a vírgula (,) para separar os intervalos de células no lugar do ponto e vírgula (;). Como exemplo, podemos escrever: Range(“B1:B5,D2:D7”)

Para finalizar, vamos falar de outra propriedade importante do objeto Range.

A propriedade Offset, que pode ser muito útil quando precisamos efetuar uma movimentação a partir da célula ativa (usada como referência da movimentação).

Nos exemplos a seguir, vamos assumir que a E5 é a célula ativa antes do movimento efetuado pela Offset.

ActiveCell.Offset(1,0) = 1

Este comando movimenta o cursor para uma linha abaixo de E5, ou seja, para E6.

ActiveCell.Offset(0,1) = 1

Este comando movimenta o cursor para uma coluna à direita de E5, ou seja, para F5.

ActiveCell.Offset(0,-3) = 1

Este comando movimenta o cursor para três colunas à esquerda de E5, ou seja, para B5.

Abs, Dr. E

P.S. Gostaria de pedir desculpas, mas infelizmente não estou conseguindo responder todos os e-mails com dúvidas que venho recebendo. Por isso, peço que não usem o espaço de comentários do post para enviar dúvidas.