112
UTFPR – Damat Excel – Macros e Programação em VBA 13 de setembro de 2007 Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007 Pág. 1 Apostila - 114 Modelo de Objetos do Excel Objeto: representa um elemento da Pasta do Excel ou o próprio Excel; Objeto Application é o aplicativo Excel; Objeto Workbook são as pastas de trabalho do Excel; Objeto Worksheet são as planilhas da pasta do Excel; Objeto Range são as células das planilhas; 5

Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

Embed Size (px)

Citation preview

Page 1: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 1

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 1Apostila - 114

Modelo de Objetos do Excel

• Objeto: representa um elemento da Pasta do Excel ou o próprio Excel;

• Objeto Application é o aplicativo Excel;

• Objeto Workbook são as pastas de trabalho do Excel;

• Objeto Worksheet são as planilhas da pasta do Excel;

• Objeto Range são as células das planilhas;

5

Page 2: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 2

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 2Apostila - 114

Métodos e Propriedades de Objetos

• Cada objeto possui métodos e propriedades.

• Métodos: utilizados para executar determinadas ações. São representados por verbos;

• Propriedades: descrevem características dos objetos;

• Exemplo: o objeto Worksheet tem uma propriedade chamada Name, que retorna o nome da planilha.

• Exemplos: Abrir uma planilha, ativar uma planilha, selecionar uma faixa de células, excluir uma faixa de células;

Page 3: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 3

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 3Apostila - 116

Coleções de Objetos

Coleção: conjunto de objetos do mesmo tipo;

1. Workbooks - coleção de todas as pastas de trabalho abertas;

2. Worksheets – coleção de todas as planilhas abertas;

Page 4: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 4

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 4Apostila - 117

Variáveis de objeto

Uma variável de objeto armazena muitos valores. Basicamente, qualquer propriedade que está associada ao objeto é associada à variável de objeto.

Exemplos:

• Dim App As Application

• Dim Wb As Workbook

• Dim Ws As Worksheet

Page 5: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 5

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 5Apostila - 117

Instrução Set

Atribui uma referência de objeto a uma variável ou propriedade.

Exemplo:

Dim Ws As worksheet

Set Ws = ThisWorkbook.Worksheets(“Dados”).

Page 6: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 6

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 6Apostila - 117

Estrutura For...Each• Estrutura utilizada para percorrer todos os elementos de

uma coleção.Exemplo:

Percorrer todos os elementos da coleção Worksheets de uma pasta de trabalho do Excel, exibindo o nome de todas as planilhas;

Page 7: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 7

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 7Apostila - 119

Objeto Application• Representa todo o aplicativo Microsoft Excel.

• É uma instância do Excel carregada na memória, isto é, ao abrir o Excel, automaticamente é criado na memória do computador um Objeto Application.

• Elementos de um Objeto Application:

1. Definições e opções para o aplicativo como um todo;

2. Métodos que retornam objetos de outros níveis, como ActiveCell, ActiveSheet e assim por diante.

• Possui 218 propriedades e métodos.

Page 8: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 8

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 8Apostila - 119

Objeto Application• Quando estamos trabalhando dentro de uma planilha do

Excel, não se faz necessária a criação explícita de um objeto Application;

• Usamos o objeto Application quanto temos que configurar alguma opção do Excel, como por exemplo, alterar as opções disponíveis no menu Ferramentas Opções e também quanto temos que acessar dados de uma planilha externa.

Page 9: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 9

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 9Apostila - 131

Exemplos de código que usam um Objeto Application

• Declaração e utilização do objeto Application:

Public Sub TesteApp()Dim App As ApplicationSet App = Excel.Application

'Exibe algumas propriedades do objeto Applicaton.MsgBox "Impressora padrão: " & App.ActivePrinterMsgBox "Versão do Excel: " & App.BuildMsgBox "Onde está instalado o Excel: " & App.Path

End Sub

ObjetoApplication

Detalhes a seguir:

Page 10: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 10

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 10Apostila - 131

Exemplos de código que usam um Objeto Application

Neste exemplo, inicialmente declaro uma variável chamada App, como sendo do tipo Application:

Dim App As Application

Inicializo esta variável, apontando-a para a instância atual do Excel. Isso é feito usando o método Application, do objeto Excel:

Set App = Excel.Application

Page 11: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 11

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 11Apostila - 131

Exemplos de código que usam um Objeto Application

Utilizo a propriedade ActivePrinter, para exibir o nome da impressora configurada como Impressora padrão, ou seja, impressora ativa:

MsgBox "Impressora padrão: " & App.ActivePrinter

Esta linha de código, produzirá a mensagem indicada no exemplo da Figura a seguir:

Page 12: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 12

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 12Apostila - 132

Exemplos de código que usam um Objeto Application

Utilizo a propriedade Build, para exibir o número de compilação, ou seja, o número oficial de Versão do Excel:

Esta linha de código, produzirá a mensagem indicada no exemplo da Figura a seguir:

MsgBox "Versão do Excel: " & App.Build

Page 13: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 13

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 13Apostila - 132

Exemplos de código que usam um Objeto Application

Utilizo a propriedade Path, para exibir o caminho completo, onde está instalado o executável do Excel:

MsgBox "Onde está instalado o Excel: " & App.Path

Esta linha de código, produzirá a mensagem indicada no exemplo da Figura a seguir:

Page 14: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 14

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 14Apostila - 142

Exemplos de código que usam um Objeto Application

Propriedade EnableAutoComplete

Esta propriedade é utilizada para habilitar/desabilitaro recurso de AutoCompletar, o qual está habilitado, por padrão.

Page 15: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 15

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 15Apostila - 142

Exemplos de código que usam um Objeto Application

ObjetoApplication

Exemplo da Propriedade EnableAutoComplete

Este exemplo ativa o recurso de AutoCompletar.

Application.EnableAutoComplete = True

Este exemplo desativa o recurso de AutoCompletar.

Application.EnableAutoComplete = False

Page 16: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 16

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 16Apostila - 144

Associação de Macros à Teclas Especiais• Método OnKey: utilizado para executar um procedimento

especificado quando uma determinada tecla ou combinação de teclas é pressionada;

Sintaxe:

• Expressão: é obrigatória e deve conter uma expressão que retorne um objeto Application;

• Key: é uma String obrigatória e determina uma seqüência de caracteres indicando a tecla a ser pressionada;

• Procedure: é uma variant opcional. Indica o nome do procedimento a ser executado.

Page 17: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 17

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 17Apostila - 144

Associação de Macros à Teclas Especiais

• Exemplo: criar uma tecla de atalho que atribui o procedimento “ImportaDados” à seqüência de teclas CTRL+SINAL DE ADIÇÃO e atribui “ImprimeEspecial” à seqüência de teclas SHIFT+CTRL+SETA À DIREITA.

Application.OnKey "^{+}", "ImportaDados“

Application.OnKey "+^{RIGHT}", "ImprimeEspecial"

Page 18: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 18

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 18Apostila - 145

Associação de Macros à Teclas Especiais

Tabela com os códigos para teclas que não tem caracteres exibidos quando são pressionadas:

Page 19: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 19

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 19Apostila - 145

Associação de Macros à Teclas Especiais

Page 20: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 20

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 20Apostila - 145

Associação de Macros à Teclas Especiais

Page 21: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 21

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 21Apostila - 145

Associação de Macros à Teclas Especiais

Page 22: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 22

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 22Apostila – 146

Associação de Macros à Teclas EspeciaisPode-se também usar teclas combinadas com SHIFT e/ou

CTRL e/ou ALT. A tabela lista as combinações:

Page 23: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 23

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 23Apostila - 146

Associação de Macros à Teclas EspeciaisUtilização do Método OnKey

Este método é normalmente utilizado em um procedimento associado ao evento Open da pasta de trabalho. O código associado ao evento Open será executado automaticamente quando o evento Open for disparado, neste caso, quando a pasta de trabalho for aberta.

Para desativar uma tecla de atalho, basta inserir no argumento Procedure uma seqüência vazia “”. Por exemplo:

Application.OnKey "+^{RIGHT}", ""

Page 24: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 24

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 24Apostila - 146

Médoto OnTime• Utilizado para programar um procedimento para ser

executado em um momento especificado no futuro

Sintaxe:

• EarliestTime: Variant obrigatória. Especifica quando você deseja que esse procedimento seja executado;

• Procedure: String obrigatória. Indica o nome do procedimento a ser executado.

Application.OnTime(EarliestTime, Procedure, LatestTime, Schedule)

Page 25: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 25

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 25Apostila - 146

Médoto OnTime

• LatestTimeLatestTime:

Variant opcional. Especifica até quando o procedimento pode ser executado. Por exemplo, se LatestTime estiver definido como EarliestTime+30 e o Microsoft Excel não estiver em modo Pronto, Copiar, Recortar ou Localizar em EarliestTime devido a um outro procedimento estar sendo executado, o Microsoft Excel irá esperar 30 segundos para que o primeiro procedimento termine. Se o Microsoft Excel não estiver em modo Pronto dentro de 30 segundos, o procedimento não será executado. Se esse argumento for omitido, o Microsoft Excel esperará até que o procedimento possa ser executado.

Page 26: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 26

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 26Apostila - 147

Médoto OnTime

• Schedule: Variant opcional. True para programar um novo procedimento OnTime. False para limpar um procedimento definido anteriormente. O valor padrão é True

Obs.: use Now + TimeValue(time) para programar algo para ser executado quando uma quantidade de tempo específica tiver decorrido. Use TimeValue(time) para programar algo para ser executado em um momento específico.

Page 27: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 27

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 27Apostila - 148

Médoto OnTime

Este exemplo executa my_Procedure após 15 segundos:

Application.OnTime Now + TimeValue("00:00:15"), "my_Procedure"

Este exemplo executa my_Procedure às 17:00:

Application.OnTime TimeValue("17:00:00"), "my_Procedure"

Este exemplo cancela a definição de OnTime do exemplo anterior:

Application.OnTime EarliestTime:=TimeValue("17:00:00"), _Procedure:="my_Procedure", Schedule:=False

ObjetoApplication

Page 28: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 28

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 28Apostila – 129

Application – Método Open

• Criação de um objeto Application e aplicação do método Open para abrir uma pasta do Excel:

Set xl = CreateObject("Excel.Sheet")

xl.Application.Workbooks.Open "C:\ExApp.xls"

ObjetoApplication

• Abre a pasta de trabalho dada pelo caminho onde está dentro do computador ou por uma variável que recebeu a atribuição da referida pasta.

Page 29: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 29

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 29Apostila - 129

Exemplos de código que usam um Objeto Application

Set xl = CreateObject("Excel.Sheet")

Usamos a função CreateObject para criar um objeto do tipo planilha do Excel, objeto esse que é associado com a variável xl:

Page 30: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 30

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 30Apostila - 148

Método GetOpenFileName• Exibe a caixa de diálogo Abrir padrão. Retorna o nome de

arquivo do usuário sem realmente abrir nenhum arquivo. É utilizado para obter o nome (caminho completo) de um arquivo e retornar este nome para uma variável do tipo texto.

Sintaxe:

• FileFilter: Variant opcional. Uma seqüência que especifica critérios de filtragem do arquivo. Se omitido, o padrão deste argumento será “Todos os arquivos(*.*),*.*”;

• FilterIndex: Variant opcional. Especifica os números de índice dos critérios padrão de filtragem de arquivo, de 1 até o número de filtros especificado em FileFilter.

Application.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)

Page 31: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 31

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 31Apostila - 148

Método GetOpenFileName

• Title: Variant opcional. Especifica o título da caixa de diálogo;

• ButtonText: Variant opcional. Somente Macintosh;

• MultiSelect: Variant opcional. True para permitir que vários nomes de arquivos sejam selecionados. False para permitir que somente um nome de arquivo seja selecionado. O valor padrão é False.

Application.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)

Page 32: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 32

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 32Apostila - 149

Método GetOpenFileName

Exemplos:

Este exemplo exibe a caixa de diálogo Open, com o filtro de arquivo definido para arquivos de texto. Se o usuário escolher um nome de arquivo, o código exibirá esse nome de arquivoem uma caixa de mensagens. O arquivo não será aberto.

fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt")If fileToOpen <> False Then

MsgBox "Open " & fileToOpenEnd If

ObjetoApplication

Page 33: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 33

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 33Apostila - 149

Método GetOpenFileName

Exemplos:

Este exemplo exibe a caixa de diálogo Open, com o filtro de arquivo definido para arquivos de texto (*.txt) e arquivos do Excel (*.xls), com um título “Arquivos” e armazena o valor retornado na variável ArquivoACarregar. Em seguida, abre o arquivo usando o método Open.

Set xl = CreateObject("Excel.Sheet")ArquivoaCarregar = Application.GetOpenFilename _("Text Files (*.txt),*.txt, Excel Files(*.xls),*xls", 2, "Arquivos de Planilha")MsgBox ArquivoaCarregarxl.Application.Workbooks.Open ArquivoaCarregar

ObjetoApplication

Page 34: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 34

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 34Apostila - 152

Método FindFile

• E método é utilizado para exibir a caixa de diálogo Abrir e permite que o usuário abra um arquivo. Se um novo arquivo for aberto com sucesso, esse método retornará True. Se o usuário cancelar a caixa de diálogo, este método retornará False.

Sintaxe:

Exemplo:

ObjetoApplication

Page 35: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 35

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 35Apostila - 152

Objeto Application

Propriedade DisplayAlerts:

• Se o valor atribuído for True, as mensagem de alerta serão acionadas.

• Se o valor atribuído for False, então as mensagens não serão acionadas.

Exemplo:

Application.DisplayAlerts = True

Page 36: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 36

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 36Apostila - 153

Objeto Application – Recálculo da Planilha

• Por padrão o Excel faz o recálculo automático das planilhas. Sempre que o valor de uma célula é alterado, todas as fórmulas que dependem do valor que foi alterado são recalculadas;

• Este procedimento pode ser controlado usando o comando Ferramentas Opções Guia Cálculo.

• Por vezes é vantagem desabilitar o recálculo automático. O método Calculate e a propriedade Calculation ajudam a controlar este processo.

Page 37: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 37

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 37Apostila - 154

Objeto Application – Método Calculate• Utilizado para forçar um recálculo imediato, ou em todas as

pastas de trabalho abertas, ou em uma planilha específica ou ainda em um intervalo de células em uma planilha. Ver tabela:

• Exemplo:

Page 38: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 38

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 38Apostila - 154

Objeto Application – Propriedade Calculation• Retorna ou define o modo de cálculo. Pode assumir o valor

definido por uma das seguintes constantes X1Calculation:

• Exemplo 1: Calcula valores em pastas de trabalho, antes de serem salvas em disco.

Application.Calculation = xlCalculationManualApplication.CalculateBeforeSave = True

Page 39: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 39

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 39Apostila - 154

Objeto Application – Propriedade Calculation

• Exemplo 2: Definir a fórmula de cálculo para manual e em seguida para automática. É útil quando muitas alterações são feitas durante a execução de um código, o que pode tornar a execução deste, muito lenta. Desta forma, executa-se o código e faz-se a atualização dos cálculos apenas ao final.

ObjetoApplication

Page 40: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 40

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 40Apostila - 154

Objeto Application – Propriedade Calculation

Sub PropriedadeCalculation()'Página 154 Application.Calculation = xlCalculationManual For i = 1 To 5 Cells(1, i) = 3 * i Next 'Comandos que fazem a alteração dos dados Application.Calculate 'Faz o recálculo da planilha Application.Calculation = xlCalculationAutomaticEnd Sub

Page 41: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 41

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 41Apostila - 120

Objeto Workbook

• O objeto Workbook representa uma pasta de trabalho do Microsoft Excel (arquivo.xls).

• É um membro da coleção Workbooks, que contém todos os objetos Workbook atualmente abertos.

• Propriedades para retornar um objeto Workbook:

1. Usa-se workbooks(índice), onde o índice é o número ou o nome da pasta de trabalho aberta. Exemplos:

Workbooks(1)

Workbooks(“Vendas”)

Page 42: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 42

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 42

Objeto Workbook2. A propriedade Name retorna o nome da pasta de trabalho.

Por exemplo:

3. A propriedade ActiveWorkbook retorna a pasta de trabalho que está ativa no momento. O exemplo seguinte define o nome do autor da pasta de trabalho ativa:

4. A propriedade ThisWorkbook retorna a pasta de trabalho onde há código de VBA. A pasta de trabalho ativa é a que está chamando o suplemento. Por exemplo:

Apostila - 120

Page 43: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 43

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 43

Objeto Workbook

Método Open: Abre uma pasta de trabalho.

ObjetosWorkbookWorksheet

Sub AbrePasta()Workbooks.Open("C:\ExApp.xls")

End Sub

Apostila – 299

Page 44: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 44

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 44

Objeto WorkbookMétodo Close: utilizado para fechar uma pasta de trabalho;

Sintaxe:

Apostila - 302

Page 45: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 45

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 45

Objeto Workbook

Apostila - 302

Page 46: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 46

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 46

Objeto Workbook

Apostila - 302

Page 47: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 47

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 47

Objeto Workbook

Exemplo: Esta linha de programação fecha a pasta Book1.xls e descarta quaisquer alterações que tenham sido feitas.

Apostila - 303

Workbooks(“ExApp.xls”)Close SaveChanges:=False

ObjetosWorkbookWorksheet

Page 48: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 48

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 48

Objeto Workbook

Método Add: Cria uma nova pasta de trabalho.

ObjetosWorkbookWorksheet

Sub AddNew()Set NovaPasta = Workbooks.AddNovaPasta.Title = "Primeiro Trimestre - 2003"NovaPasta.Subject = "Vendas do Trimestre"NovaPasta.SaveAs filename:="C:\Vendas.xls"

End Sub

Apostila - 299

Método SaveAs: é equivalente ao comando Arquivo Salvar como... É utilizado para salvar as alterações da pasta de trabalho em um arquivo diferente do arquivo atual;

Page 49: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 49

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 49

Objeto Workbook

Propriedade Path: retorna o caminho completo do objeto, excluindo o separador final e o nome do objeto. É uma propriedade do tipo String e é somente leitura;

Exemplo:

ObjetosWorkbookWorksheet

Apostila - 305

Page 50: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 50

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 50

Objeto WorksheetO objeto Worksheet representa uma planilha do Excel. É um membro da coleção Worksheets, que contém todas as planilha atualmente abertas.Use Worksheets(índice), Charts(índice), Worksheets(“Nome”) ou Charts(“Nome”) onde índice é o número de ordem da planilha ou nome da planilha ou gráfico para retornar um único objeto worksheet.

Worksheets(1)

Worksheets(“Plan1”)

Charts(“Gráfico1”)

Apostila - 121

Page 51: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 51

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 51

Objeto Worksheet

Propriedade Activate: Utilizada para ativar uma planilha ou gráfico:

ObjetosWorkbookWorksheet

Sub AtivaPeloNome()

Worksheets(1).Activate

Worksheets(“Plan2”).Activate

Worksheets(“Gráfico1”).Activate

End Sub

Apostila - 299

Page 52: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 52

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 52

Objeto Worksheet

Propriedade ActiveSheet: Quando se quer fazer referência à planilha ativa

Exemplo: ativa a Plan1, define a orientação da página como modo paisagem e em seguida imprime a planilha.

Apostila - 122

Page 53: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 53

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 53

Objeto Worksheet

Propriedade Name: retorna o nome da planilha;

Exemplo:

ObjetosWorkbookWorksheet

Apostila - 303

Page 54: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 54

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 54

Objeto WorksheetPropriedades ActiveChart: retorna um objeto Chart representando o gráfico ativo da pasta de trabalho ativa ou na janela ou pasta de trabalho especificada;

Propriedade HasLegend: se for atribuído False, a legenda será omitida. Se for atribuído True, a legenda será exibida.

ObjetosWorkbookWorksheet

Apostila - 303

Page 55: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 55

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 55

Objeto Worksheet

Método Delete: Exclui uma planilha da pasta de trabalho.

Sintaxe:

ObjetosWorkbookWorksheet

Worksheets(NomedaPlanilha).Delete

Apostila - 308

Sub MétodoDelete() Application.DisplayAlerts = False Worksheets("Plan1").Delete MsgBox "Verifique a operação." Application.DisplayAlerts = TrueEnd Sub

Exemplo:

Page 56: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 56

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 56

Objeto Worksheet

Método Add da Coleção Worksheets: Utilizado para criar uma nova planilha;

Sintaxe:

ObjetosWorkbookWorksheet

expressão.Add(Before, After, Count, Type)

Apostila - 308

Sub MétodoAddPlanilha() Worksheets.Add ActiveSheet.Name = "Plan1"End Sub

Exemplo:

Page 57: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 57

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 57

Eventos

Eventos:

São ações realizadas pelo usuário usando o teclado ou mouse. Por exemplo, ao abrir uma pasta de trabalho, são disparados diversos eventos do objeto Application e do objeto Workbook. Outro exemplo, seria quando você clica em um botão de comando:

Apostila - 329

Page 58: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 58

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 58

EventosEvento Activate: ocorre quando um objeto (Planilha, Gráfico, Folha de dados, etc.) torna-se a janela ativa.

Evento Deactivate: ocorre quando um objeto não é mais uma janela ativa, ou seja, quando o objeto perde o foco.

Sintaxe:

Apostila - 331

Page 59: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 59

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 59Apostila - 331

Eventos

Exemplo de Evento para Worksheet: Vamos criar um procedimento em resposta ao evento Activate.1. Abra o Excel;

2. Abra a planilha C:\Programação VBA no Excel\Modulo 4 - Exercício 01- Eventos.xls.

3. Selecione o comando Ferramentas -> Macro -> Editor Visual Basic... ou pressione Alt+F11.

4. Nas opções que são exibidas do lado esquerdo da tela clique em Plan1 (Plan1) para selecionar esta opção.

Page 60: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 60

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 60Apostila - 331

Eventos5. Na lista Geral, selecione Worksheet e na lista ao lado

selecione Activate. Pode ocorrer de o Editor do VBA ter criado duas declarações, uma para o evento Activate e uma para o Evento SelectionChange, conforme indicado a seguir:

Page 61: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 61

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 61Apostila - 331

Eventos

6. Exclua a declaração para o evento Worksheet_SelectionChange, mantendo apenas a declaração para o evento Worksheet_Activate;

7. Para o procedimento do evento Worksheet_Activate, insira o código indicado a seguir:

If Range("B7").Value < 6500 Then MsgBox "META DE VENDAS NÃO ATINGIDA!!!"Else MsgBox "META DE VENDAS ATINGIDA!!! PARABÉNS!!!"End If

Page 62: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 62

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 62

8. A sua janela deve estar conforme indicado na Figura a seguir:

Apostila - 331

Eventos

Page 63: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 63

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 63Apostila - 331

Eventos9. Observe o objeto Worksheet selecionado na primeira lista e o

evento Activate,selecionado na segunda lista. Ou seja, o Evento Activate do Objeto Worksheet. Clique no botão ( ) para salvar as alterações e feche o Editor do VBA.

10.Agora vamos fazer com que o evento Activate da planilha Plan1 seja disparado.Clique em Plan2 para tirar o foco da planilha Plan1, agora clique de volta em Plan1 para colocar o foco em Plan1. Ao colocar o foco de volta em Plan1, será disparado o evento Activate. O código associado a este evento será executado e será exibida a mensagem indicada na Figura a seguir:

Page 64: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 64

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 64Apostila - 331

Eventos

Page 65: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 65

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 65Apostila - 331

Eventos

11.Clique em OK para fechar a mensagem. Esta mensagem

foi exibida porque o valor da célula B7 é 5200, ou seja,um valor menor do que 6500. Agora vamos fazer uma alteração nas vendas do ano 2002. Vamos alterar as vendas deste ano para 4000, de tal maneira que o total de vendas fique em 8000, conforme indicado na Figura a seguir:

Page 66: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 66

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 66Apostila - 331

Eventos12. Agora vamos fazer com que o evento Activate da planilha

Plan1 seja disparado novamente. Clique em Plan2 para tirar o foco da planilha Plan1, agora clique de volta em Plan1 para colocar o foco em Plan1. Ao colocar o foco de volta em Plan1, será disparado o evento Activate. O código associado a este evento será executado e será exibida a mensagem indicada na Figura a seguir:

Page 67: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 67

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 67Apostila - 341

EventosEvento do Objeto Workbook: os eventos de pasta de

trabalho ocorrem quando esta é alterado ou quando qualquer planilha da pasta de trabalho é alterada. Os eventos em pastas de trabalho são ativados por padrão.

Para visualizar os procedimentos de evento de uma pasta de trabalho, siga os passos indicados a seguir:

1. Abra o Excel.2. Abra o arquivo a ser utilizado.3. Selecione o comando Ferramentas -> Macro -> Editor

Visual Basic... ou pressione Alt+F11.4. Na árvore de opções, no lado esquerdo do Editor do VBA,

clique na opção EstaPasta_de_trabalho.

Page 68: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 68

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 68Apostila - 341

Eventos

5. Na lista da esquerda selecione Workbook.6. Abra a lista da direita e já serão exibidos todos os eventos

do objeto Workbook, conforme ilustrado na Figura a seguir:

Page 69: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 69

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 69Apostila - 341

Eventos

7. Ao clicar em um dos eventos, será criada a declaração para o procedimento associado ao evento. No exemplo a seguir, foi selecionado o evento Open, para o qual foi criada a seguinte declaração de procedimento:

Private Sub Workbook_Open()

End Sub

Page 70: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 70

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 70Apostila - 341

Eventos

Evento Open do Objeto Workbook: Ocorre quando a pasta de trabalho é aberta.

Sintaxe:

Exemplo do Evento Open:

Page 71: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 71

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 71Apostila - 122

Objeto Range• Representa uma célula, uma linha, uma coluna, uma

seleção de células contendo um ou mais blocos contíguos ou um intervalo 3D;Referência a célula:

Range (“A1”)

Define uma única célula como objeto de um comando ou propriedade.

Referência a intervalo de células:

Range(“A1:B5”)

Define um intervalo de células como objeto de um comando ou propriedade

Page 72: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 72

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 72Apostila - 122

Objeto Range

Propriedade Value:

Retorna ou define o valor de uma determinada célula do Range.

Exemplo:

Range("A5").Value = Range("A1").Value

Page 73: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 73

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 73Apostila - - 250

Objeto RangePropriedade Fórmula:Retorna ou define a fórmula do objeto, em notação de estilo A1 e no idioma da macro. É do tipo variant de leitura e gravação para objetos Range, String de leitura e gravação para todos os demais objetos.

Se a célula contiver uma constante, essa propriedade retornará a constante.

Se a célula estiver vazia, Formula retornará uma cadeia de caracteres vazia.

Se a célula contiver uma fórmula, a propriedade Formula retornará a fórmula como uma cadeia de caracteres no mesmo formato em que ela seria exibida na barra de fórmulas.

Page 74: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 74

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 74Apostila - 251

Objeto RangeObjetoRange

Exemplo: Define a fórmula para o intervalo de células C2 a C6 da planilha 3.

Worksheets("Plan3").ActivateDim rng As RangeSet rng = Worksheets("Plan3").Range("C2:C6")rng.Formula = "=A2-B2"MsgBox "Verifique o resultado da operação."

Page 75: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 75

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 75Apostila - 235

Objeto RangeMétodo Clear:

Se aplica a outros objetos, além do objeto Range.

Utilizado para limpar as fórmulas e a formatação da células.

Sintaxe:

expressão.Clear

Exemplo:

Worksheets(“Plan1”).Range(“A1:F40”).Clear

Charts(“Gráfico1”).ChartArea.Clear

Page 76: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 76

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 76Apostila - 236

Objeto RangeMétodo ClearContents:

Limpa as fórmulas do intervalo. Limpa os dados de um gráfico mas deixa a formatação.

Sintaxe:

Expressão.ClearContents

Exemplo:

Worksheets(“Plan1”).Range(“A1:F40”).ClearContents

Charts(“Gráfico1”).ChartArea.ClearContents

Page 77: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 77

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 77Apostila - 123

Objeto Range

Exemplo: Preencher o intervalo A1:H8 com números randômicos definindo a fórmula para cada célula do intervalo.

Exemplo: Limpa o conteúdo do intervalo chamado criteria.

Worksheets("sheet1").ActivateRange("A1:H8").Formula = "=rand()"

Worksheets(1).Range("criteria").ClearContents ObjetoRange

ObjetoRange

Page 78: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 78

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 78Apostila - 123

Objeto RangePropriedade Cells

Usa-se Cells(linha, coluna) onde linha é o índice da linha e coluna é o índice da coluna para retornar uma única célula.

Exemplo 1: Define o valor da célula A1 como 24.

Worksheets(1).Cells(1, 1).Value = 24

Exemplo 2: Define uma fórmula para a célula ativa.

ActiveSheet.Cells(2, 1).Formula = "=sum(B1:B5)"

Page 79: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 79

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 79Apostila - 123

Objeto Range

Exemplo: Use expressão.Cells(linha,coluna), onde expressão é uma expressão que retorna um objeto Range e linha e coluna são relativas ao canto superior esquerdo do intervalo, para retornar parte de um intervalo. O exemplo seguinte define uma fórmula para a célula C5.

Worksheets(1).Range("C5:C10").Cells(1, 1).Formula = "=rand()"

Page 80: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 80

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 80Apostila - 123

Objeto Range

Exemplo: Define o estilo da linha da borda das células

A1 até J10.

Worksheets(1).Range(Cells(1, 1), Cells(10,8)).Borders.LineStyle = xlThick

ObjetoRange

Referência a Intervalos:

Pode-se fazer referência a um intervalos usando a sintaxe:

Range(Cells(linha, coluna), Cells(linha,coluna))

Page 81: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 81

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 81Apostila - 124

Objeto RangePropriedade OffSet

Usa-se Offset(linha, coluna), onde linha e coluna são os deslocamentos de linha e coluna, para retornar um intervalo em um deslocamento especificado de um outro intervalo.Exemplo: Seleciona a célula três linhas abaixo e uma coluna à direita da célula do canto superior esquerdo da seleção atual.

Sub Range4()Worksheets("Plan1").Activate

Range("A1").Offset(3, 1).Value = "Teste"End Sub

Page 82: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 82

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 82Apostila - 124

Objeto RangePropriedade Select

Seleciona uma célula ou um intervalo de células em código.

Método Union

Usa-se Método Union(intervalo1,intervalo2,...) para retornar intervalos de várias áreas – isto é, intervalos compostos de dois ou mais blocos contíguos de células.

Range(“B5:C8”).SelectExemplo:

Page 83: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 83

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 83Apostila - 124

Objeto RangeExemplo: Cria um objeto definido como a união dos intervalos A1:B2 e C3:D4, e em seguida, seleciona o intervalo.

Dim r1 As Range, r2 As Range Dim myMultiAreaRange As RangeWorksheets(“Plan1").ActivateSet r1 = Range("A1:B2")Set r2 = Range("C3:D4")Set myMultiAreaRange = Union(r1, r2)myMultiAreaRange.Select

Page 84: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 84

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 84Apostila - 207

Objeto Range

Propriedades Cells, Rows e Columns

• Cells: retorna uma coleção de células. Esta propriedade está definida pelos parâmetros passados quando da chamada da propriedade Cells;

• Rows: Retorna uma coleção de linhas do objeto Range. A coleção de linhas também é um objeto do tipo Range;

• Colums: retorna uma coleção de colunas do objeto Range. A coleção de coluna também é um objeto Range.

ObjetoRange

Page 85: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 85

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 85Apostila - 210

Objeto Range

Estrutura For Each: percorre as células de um objeto Range

ObjetoRange

Dim MinhaFaixa As RangeSet MinhaFaixa = Range("A1:B5")For Each Celula In MinhaFaixa.Cells Celula.Value = 50NextMsgBox "Verifique o resultado da operação."End Sub

Page 86: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 86

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 86Apostila - 212

Objeto RangeUtilização dos índices da propriedade Cells:

Digite os valores mostrados na figura na planilha 1.

Exemplo da Planilha PropCells

ObjetoRange

Page 87: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 87

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 87Apostila - 212

Objeto Range

Worksheets("PropCells").ActivateDim MinhaFaixa As Range

Set MinhaFaixa = Range("A1:C5")MinhaFaixa.Cells(2, 3).Font.Bold = TrueMinhaFaixa.Cells(2, 3).Font.ColorIndex = 3MsgBox "Valor da célula da 2ª linha e da 3ª coluna: " & MinhaFaixa.Cells(2, 3)

MinhaFaixa.Cells(3, 1).Font.Bold = TrueMinhaFaixa.Cells(3, 1).Font.ColorIndex = 7MsgBox "Valor da célula da 3ª linha e da 1ª coluna: " & MinhaFaixa.Cells(3, 1)

Page 88: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 88

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 88Apostila - 219

Objeto RangeRange para intervalo de Linhas

Define um intervalo de linhas como objeto de um comando ou propriedade.

Sintaxe:

Range(Linha inicial:Linha final)Rows(Linha inicial:Linha final)

Exemplo:

Worksheets(1).Range(“ 1:3”).SelectWorksheets(2).Rows(“ 1:3”).Select

ObjetoRange

Page 89: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 89

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 89Apostila - 219

Objeto RangeRange para intervalo de Colunas

Define um intervalo de colunas como objeto de um comando ou propriedade.

Sintaxe:Range(Coluna inicial:Coluna final)Columns(Coluna inicial:Coluna final)

Exemplo:

Worksheets(1).Range(“ A:C”).SelectWorksheets(2).Columns(“ A:C”).Select

ObjetoRange

Page 90: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 90

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 90Apostila - 219

Objeto RangePropriedades Row e Column:

Retorna o número da primeira linha ou coluna na primeira área do intervalo especificado. É do tipo Long e somente leitura.Exemplo:

A segunda linha do código retornará 2 porque B , que é a primeira coluna od intervalo, é a coluna 2.

A primeira linha do código retornará 3 porque a primeira referência do intervalo é B3, que está na linha 3

Msgbox Worksheets(“plan1”).Range(“B3:D12”).Column

Msgbox Worksheets(“plan1”).Range(“B3:D12”).Row

ObjetoRange

Page 91: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 91

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 91Apostila - 219

Objeto RangePropriedades Rows e Columns:

Retorna o número de linhas ou colunas do intervalo especificado. Exemplo:

A segunda linha do código retornará 3 porque é o número total de colunas do intervalo

A primeira linha do código retornará 10 porque é o número total de linhas do intervalo.

Msgbox Worksheets(“plan1”).Range(“B3:D12”).Columns.Count

Msgbox Worksheets(“plan1”).Range(“B3:D12”).Rows.Count

ObjetoRange

Page 92: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 92

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 92Apostila - 226

Objeto RangePropriedade AreasEsta propriedade retorna uma coleção Areas, a qual representa todos os intervalos em uma seleção de várias áreas. É do tipo somente leitura.

A coleção retornada pela propriedade Areas é uma coleção das áreas, ou blocos contíguos de células, dentro de uma seleção ou objeto Range. Não há objeto Area separado; os membros individuais da coleção Areas são objetos Range. A coleção Areas contém um objeto Range para cada intervalo de células contíguo individual dentro da seleção. Se a seleção contiver somente uma área, a coleção Areas conterá um único objeto Range correspondente a essa seleção.

Page 93: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 93

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 93Apostila - 227

Objeto Range

Exemplo:ObjetoRange

Set rangeToUse = SelectionMsgBox rangeToUse.Areas.CountIf rangeToUse.Areas.Count = 1 Then rangeToUse.Font.Bold = TrueElse For Each singleArea In rangeToUse.Areas singleArea.Borders.LineStyle = xlThick NextEnd If

Page 94: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 94

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 94Apostila - 240

Objeto RangePropriedade CurrentRegion:

Retorna um objeto Range representado pela região atual. Região atual é um intervalo limitado por qualquer combinação de linhas e colunas em branco. É do tipo somente leitura. Observe a figura

Neste exemplo, a região atual é A1:D7, ou seja, com este método o Excel tenta detectar a região da planilha que está sendo utilizada. Se houver células, linhas ou colunas em branco, dentro da região em uso, o Excel poderá retornar uma faixa incorreta.

Page 95: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 95

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 95Apostila - 227

Objeto RangeMétodo Activate:

Utilizado para ativar, ou melhor, colocar o foco em um determinado objeto.

Page 96: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 96

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 96Apostila - 228

Objeto Range

Exemplo 01: Este exemplo seleciona as células A1:C3 de Plan1 e, em seguida, faz de B2 a célula ativa.

Worksheets("Plan3").ActivateRange("A1:C3").SelectRange("B2").Activate

Exemplo 02:Este exemplo abre a pasta ExApp.xls, ativa a pasta ObjetoRange e em seguida, ativa a pasta ExApp.xls.

Workbooks.Open ("c:/ExApp.xls")Workbooks("ObjetoRange.xls").ActivateWorkbooks("ExApp.xls").Activate

ObjetoRange

Page 97: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 97

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 97Apostila - 229

Objeto RangeMétodo AutoFill:

Utilizado para fazer o preenchimento automático da faixa de células do objeto Range.

Sintaxe:

ObjetoRange

Worksheets("Plan2").ActivateRange("A1:A3").AutoFill Range("A1:A10")MsgBox "Verifique o resultado da operação."

Exemplo:

Page 98: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 98

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 98Apostila - 237

Objeto RangeMétodo Copy:

Utilizado para copiar.

Sintaxe 1: Copia o objeto range ou figura selecionada para a área de transferência.

expressão.copy

Sintaxe 2: Copia o objeto range selecionado para um intervalo especificado como destino ou para a área de transferência.

expressão.copy(Destination)

Sintaxe 2: Copia a planilha para um outro lugar na pasta de trabalho.

expressão.copy(Antes, Depois)

Page 99: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 99

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 99Apostila - 237

Objeto RangeMétodo Copy:

Exemplo:

ObjetoRange

Worksheets("Plan1").Copy after:=Worksheets("Plan3")MsgBox "Verifique o resultado"Worksheets("Plan1").Range("A1:D4").Copy Destination:=Worksheets("Plan2").Range("E5")Worksheets("Plan2").ActivateMsgBox "Verifique o resultado"

Page 100: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 100

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 100Apostila - 238

Objeto RangeMétodo Cut:

Utilizado para recortar o conteúdo do objeto Range para a área de transferência ou para colá-lo em um local especificado.

Sintaxe: expressão.Cut(Destination)

Exemplo: Recorta o intervalo A1:G37 da Planilha Plan1 e o coloca na área de tranferência.

Worksheets(“Plan’”).Range(“A1:G37”).Cut

Page 101: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 101

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 101329 -

Objeto Workbook e Objeto WorksheetMétodo Paste: utilizado para colar o conteúdo da área de transferência na planilha.

Sintaxe:

Page 102: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 102

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 102329 -

Objeto Workbook e Objeto Worksheet

Exemplo:

ObjetosWorkbookWorksheet

Worksheets("Plan3").ActivateWorksheets("Plan3").Range("A1:B6").CopyActiveSheet.Paste Destination:=ActiveSheet.Range("E1:F6")MsgBox "Verifique o resultado da operação"

Page 103: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 103

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 103Apostila - 235

Objeto RangeMétodo Calculate:

Se aplica a outros objetos, além do objeto Range.

Utilizado para calcular todas as pastas de trabalho (quando for usado com o objeto Workbook) abertas , uma planilha específica em uma pasta de trabalho (quando usado com o método Worksheet) ou um intervalo especificado de células em uma planilha (quando usado com o objeto Range). Ver resumo da aplicação deste método na tabela.

Page 104: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 104

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 104Apostila - 238

Objeto RangePropriedade End(xlDown):

Utilizada junto com o objeto Range para encontrar a última célula de um intervalo Range.

Sintaxe:

Range(primeira célula, Range(segunda célula).End(xlDown))

Exemplo: Seleciona na planilha 3 o intervalo de A1 até B6.

Worksheets(3).ActivateWorksheets(3).Range("A1", Range("B1").End(xlDown)).Select

ObjetoRange

Page 105: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 105

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 105Apostila - 278

Objeto Range

Exemplo Prático 1: Elaborar um código que faz a comparação entre valores de duas colunas, linha a linha. Se o valor da segunda coluna for maior ou igual ao valor da primeira, a célula da segunda coluna será colocada em destaque, através da alteração de sua cor de fundo.

ObjetoRange

Page 106: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 106

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 106Apostila - 278

Objeto RangeObjetoRange

Worksheets("ExPrat1").ActivateDim CurrCell As RangeFor Each CurrCell In Range("C2:C13")If CurrCell.Value < CurrCell.Offset(0, -1).Value Then

CurrCell.Interior.ColorIndex = 6Else

CurrCell.Interior.ColorIndex = xlNoneEnd IfNextMsgBox "Verifique o resultado da operação!"

Page 107: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 107

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 107Apostila 285

Objeto RangeExemplo Prático 2: Elaborar um código que separa dados de uma coluna em uma ou mais colunas. Considere os dados:

Antes de ir para a pasta ObjetoRange.xls, verificar as próximas transparências.

ObjetoRange

Nosso objetivo é extrair somente o código da coluna A (sem os parênteses) e colocá-lo na coluna B e extrair somente o nome e colocá-lo na coluna C:

Page 108: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 108

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 108Apostila - 285

Objeto Range

Dim rngCell As RangeDim strName As StringDim AbreParen As IntegerDim FechaParen As Integer

Dimensionamento das variáveis a serem utilizadas.

Worksheets("ExPrat2").Activate

Ativação da planilha “ExPrat2”.

Page 109: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 109

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 109Apostila - 285

Objeto RangeDefino um laço For..Each da célula A2 até a última célula, com dados, na col A. No nosso exemplo será retornado o endereço da célula A8.Com isso a faixa a ser trabalhada será A2:A8.

For Each rngCell In Range("A2", Range("A1").End(xlDown))

Armazena o valor da célula na variável strName

strName = rngCell.Value

Page 110: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 110

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 110Apostila - 285

Objeto Range

Retorna a posição do Abre Parênteses (

AbreParen = InStr(1, strName, "(")

Retorna a posição do Fecha Parênteses )

FechaParen = InStr(1, strName, ")")

Com base nas posições do abre e fecha parênteses, extrair o número que está dentro do parênteses e salvá-lo na Célula correspondente, na Coluna B.

rngCell.Offset(0, 1).Value = _ Mid(strName, AbreParen + 1, FechaParen - AbreParen - 1)

Page 111: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 111

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 111Apostila - 285

Objeto Range

Extrai o nome do cliente e salva na coluna C.

rngCell.Offset(0, 2).Value = Mid(strName, 1, AbreParen - 2)

Fecha o comando For Each

Next rngCell

Acrescenta uma caixa de mensagem para verificarmos a operação efetuada.

MsgBox "Verifique o resultado da operação!"

Page 112: Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 Excel – Macros e Programação em VBA 13 de setembro de 2007Pág. 1 UTFPR – Damat Apostila

UTFPR – Damat

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 112

Excel – Macros e Programação em VBA

13 de setembro de 2007 Pág. 112Apostila - 289

Objeto RangeExemplo Prático 3: Preencher as células da coluna D com uma fórmula que soma os valores das colunas A, B e C.

Sub PreencheFormula()Dim myRng As RangeDim lastRw As LongWorksheets("ExPrat3").Activate'Uso o método End para obter a última linha da faixa de dados.lastRw =Worksheets("ExPrat3").Range("C1").End(xlDown).RowWorksheets("ExPrat3").Range("D1").Formula = "=SUM(A1:C1)"Worksheets("ExPrat3").Range("D1").AutoFill _ Destination:=Worksheets("ExPrat3").Range("D1:D" & lastRw”)MsgBox "Verifique o resultado da operação!"End Sub