Tutorial 2 – Básico do VBA do Excel
ª
Este tutorial contém a 2 lição sobre a série de Tutoriais do VBA Básico do Excel. Ele cobre tópicos dos Objetos e
Coleções mais usados do Excel. Iniciantes na programação de VBA serão encorajados a percorrerem de cabo a rabo
as 1ª lições desta série se eles ainda não fizeram isto. Este documento contém informação sobre os seguintes tópicos.
Objetos e Coleções
Objeto Workbook e Worksheet
Objeto Range e Propriedade Cells
Métodos e Propriedades
Atribuindo Variáveis Objeto e Usando Argumento Nomeado
Microsoft Support site ou a seção Ajuda (Help) do VBA do Excel no seu computador contém exemplos compreensivos
da maioria das coisas cobertas neste tutorial. Para mais informação, por favor refira-se a elas.
Objetos e Coleções Microsoft Support
Objetos são os blocos de construção fundamentais do Visual Basic. Um objeto é um tipo especial de variável que
contém ambos, dados e códigos. A coleção é um grupo de objetos da mesma classe. Os objetos mais usados do
Excel na programação VBA são Workbook, Worksheet, Sheet, e Range.
Workbooks é uma coleção de todos os objetos Workbook. Worksheets é uma coleção de objetos Worksheet.
O objeto Workbook representa uma workbook, o objeto Worksheet representa uma planilha, o objeto Sheet representa
uma planilha ou gráfico, e o objeto Range representa um intervalo de células.
A figura seguinte mostra todos os objetos mencionados. A workbook (arquivo Excel) atual é a [Link]. A planilha
atual é a Plan1 como a Guia de Planilha indica. Dois intervalos estão selecionados, intervalo B2 e B7:B11.
Objetos Workbook e Worksheet
Um objeto workbook é o mesmo que um arquivo Excel. A coleção Workbook contém todas as workbooks que estão
atualmente abertas. Dentro de uma workbook contém no mínimo uma worksheet. Em VBA, uma worksheet pode ser
referenciada como segue:
Worksheets("Plan1")
Worksheets("Plan1") é a worksheet chamada "Plan1."
Outro modo de se referir a uma planilha é usar números índices como o que segue:
Worksheets(1)
Acima se refere à primeira planilha na coleção.
* Note que a Worksheets(1) não é necessariamente a mesma planilha que Worksheets("Plan1").
Sheets é uma coleção de planilhas e gráficos (se presente). Uma planilha pode ser indexada exatamente como uma
planilha. Sheets(1) é a primeira planilha na workbook.
Para se referir as sheets (ou outros objetos) com o mesmo nome, você tem de qualificar o objeto. Por exemplo:
Workbooks("Book1").Worksheets("Plan1")
Workbooks("Book2").Worksheets("Plan1")
se o objeto não for qualificado, o objeto ativo ou atual (por exemplo workbook ou worksheet) é usado.
A guia planilha no fundo da planilha (worksheet) mostra qual planilha está ativa. Como mostra a figura abaixo, a
planilha ativa é "Plan1" (mostrada em fonte negrito e fundo branco).
* Você pode mudar a cor das guias de planilha clicando com o botão direito do mouse na guia, escolhendo a Guia Cor,
e selecionando a cor para a guia.
A sub-rotina abaixo mostra o nome de cada planilha na workbook atualmente aberta. Você pode usar o laço For
Each...Next para circular pela coleção Worksheets.
Sub MostrarPlanilhas()
Dim minhaPlanilha As Worksheet Clicando Ok vai
aparecendo os
For Each minhaPlanilha In Worksheets outros nomes
MsgBox [Link]
Next minhaPlanilha
End Sub
Objeto Range e Propriedade Cells
Range representa uma célula, uma linha, uma coluna, uma seleção de células contendo um ou mais blocos contíguos
de células, ou um intervalo 3-D. Mostraremos a você alguns exemplos sobre como o objeto Range pode ser usado.
O exemplo seguinte coloca o texto "AB" no intervalo A1:B5, na Plan2.
Worksheets("Plan2").Range("A1:B5") = "AB"
Note que, [Link]("A1", "B5") = "AB" levará ao mesmo resultado que o exemplo acima.
O que segue coloca "AAA" na célula A1, A3, e A5 na Plan2.
Worksheets("Plan2").Range("A1, A3, A5") = "AAA"
O objeto Range tem uma propriedade Cells. Esta propriedade é usada em todos os projetos VBA deste tutorial (muito
importante). A propriedade Cells carrega um ou dois índices como seus parâmetros.
Por exemplo,
Cells(índice) ou Cells(linha, coluna)
onde linha é o índice linha e coluna é o índice coluna.
As três declarações seguintes podem ser trocadas:
[Link](1,1)
[Link](1,1)
Cells(1,1)
O que segue retorna a mesma saída:
Range("A1") = 123 e Cells(1,1) = 123
O que segue coloca "XYZ" na Célula(1,12) ou Range("L1") assumindo que a célula A1 é a célula atual:
Cells(12) = "XYZ"
O que segue coloca "XYZ" na célula C3:
Range("B1:F5").cells(12) = "XYZ"
* O pequeno número cinza em cada uma das células é apenas para propósitos de referência somente. Eles são usados
para mostrar como as células estão indexadas dentro do intervalo.
Aqui está uma sub rotina que imprime a os correspondentes índices de linha e de coluna correspondente de A1 a E5.
Sub ExemploCelulas()
For i = 1 To 5
For j = 1 To 5
Cells(i, j) = "Row " & i & " Col " & j
Next j
Next i
End Sub
O objeto Range tem uma propriedade Offset que pode ser muito útil quando se quer mover ao redor da célula ativa. Os
exemplos seguintes demonstram como a propriedade Offset pode ser implementada (assuma a célula atual antes de se
mover seja a E5):
[Link](1,0) = 1 Coloca um "1" uma linha abaixo de E5 (em E6)
Direção de movimento
[Link](0,1) = 1 Coloca um "1" uma coluna à direita de E5 (em F5)
Direção de movimento
[Link](0,-3) = 1 Coloca um "1" três colunas à esquerda de E5 (em B5)
Direção de movimento
Métodos e Propriedades
Cada objeto contém seus métodos e propriedades próprios.
A Propriedade representa uma característica embutida ou definida pelo usuário do objeto. Um método é uma ação
que você faz num objeto. Abaixo estão exemplos de um método e uma propriedade para o Objeto Workbook:
[Link]
O método Close fecha a workbook ativa
[Link]
A propriedade Count retona o número de workbooks que estão abertas atualmente
Alguns objetos têm propriedades default. Por exemplo, a propriedade default do Range é o Value.
O que segue leva ao mesmo resultado.
Range("A1") = 1 e Range("A1").Value = 1
Aqui estão exemplos de como configurar e obter o valor da propriedade Range:
O que segue configura o valor do range A1 ou Cells(1,1) como "2005". Ele realmente imprime "2005" em A1.
Range("A1").Value = 2005
O que segue dá o valor do range A1 ou Cells(1,1).
X = Range("A1").Value
Métodos podem ser usados com ou sem argumento(s). Os dois exemplos seguintes demonstram seu comportamento.
Métodos Que Não Levam Nenhum Argumento:
Worksheets("Plan").Column("A:B").AutoFit
Métodos Que Levam Argumentos:
Worksheets("Plan1").Range("A1:A10").Sort _
Worksheets("Plan1").Range("A1")
Worksheets("Plan1").Range("A1") é a Key (ou coluna) para classificar por ela.
Atribuindo Variáveis a Objetos e Usando Argumentos Nomeados
Às vezes um método leva mais do que um argumento. Por exemplo, o método Open para o objeto Workbook, leva 12
argumentos. Para abrir uma workbook com proteção de password, você precisará escrever o código seguinte:
[Link] "[Link]", , , ,"pswd"
Como este método leva tantos argumentos, é fácil colocar o argumento password no lugar errado. Para superar este
problema potencial, podem-se usar argumentos nomeados como o exemplo seguinte:
[Link] fileName:="[Link]", password:="pswd"
Você pode também atribuir uma variável a um objeto Declaração Set.
Por exemplo:
Dim meuIntervalo as Range
Set meuIntervalo = Range("A1:A10")
Continuar como Tutorial 3 do Básico do VBA do Excel