Este post tem o intuito de apresentar o VBA (Visual Basic for Applications) no Excel para os usuários avançados do Excel que ainda não são programadores de fato. Teremos:
Uma visão geral da linguagem VBA,
Algumas instruções sobre como acessar o VBA no Excel, e
Uma solução para um problema no mundo real, além de dicas sobre programação e depuração.
Por que usar o VBA no Excel?
O Microsoft Excel 2010 é uma ferramenta que pode ser usada para manipular, analisar e apresentar dados como se fossem informações. Apesar do conjunto de recursos disponíveis na interface padrão (UI), podemos querer maneiras mais fáceis de executar algumas das nossas repetitivas e aborrecidas tarefas, ou executar alguma tarefa que a UI não pode resolver sozinha. Felizmente, os aplicativos do Office, como o Excel tem no VBA alguma capacidade de estender as suas funcionalidades padrão.
O VBA funciona como a maioria das linguagens de programação: Processando diversos conjuntos de algoritmos alocados em SUBs, FUNCTIONS ou MACROS.
Aprender a programar pode parecer intimidador, mas com um pouco de paciência e alguns exemplos a maioria dos usuários acham que vale a pena aprender um pouco de codificação VBA para tornar o trabalho mais fácil, dando-lhes a capacidade de fazer coisas que pensavam ser impossíveis. E o melhor: Depois de ter aprendido um pouco, torna-se muito mais fácil aprender técnicas e coisas diferentes. Então as possibilidades são ilimitadas!
AUTOMATIZANDO TAREFAS REPETITIVAS
De longe, o motivo mais comum para se usar o VBA no Excel é o de automatizar tarefas repetitivas. Por exemplo, suponha que tenha umas 12 planilhas, cada uma delas contendo uma dúzia de pastas dentro de si, e que cada uma dessas precise sofrer algumas alterações, estas poderiam ser:
Aplicação de uma nova formatação para algum intervalo fixo entre as células.Retornar alguns detalhes estatísticos dos dados de cada uma destas abas, escolhendo o melhor tipo de gráfico para exibí-los com as características selecionadas, e, em seguida, criar e formatar um gráfico de conformidade, exportando-o para o Powerpoint.
Qualquer uma das 2 tarefas acima não precisam ser executadas manualmente, pelo menos não mais do que algumas vezes. Em vez disso, poderá automatizar as tarefas usando o VBA para escrever instruções explícitas para Excel a seguir.
É importante não limitarmos o VBA aplicando-o somente às tarefas repetitivas, pois também podemos usá-lo em outros âmbitos, tais como:
Para construir novas capacidades que não são naturais ao Excel, como desenvolvermos algoritmos que analisem os nossos dados, e em seguida usem os recursos gráficos do Excel para exibir os resultados.Também podemos escrever algum código para realizar tarefas que integrem o Excel a outros aplicativos do Office tais como o Microsoft Access. Talvez, de todos os demais aplicativos do Office, o Excel seja o mais utilizado como algo que se assemelhe a uma plataforma de desenvolvimento. Além de todas as tarefas que envolvem listas óbvias e contábeis, os desenvolvedores usam o Excel em uma série de tarefas de visualizações de dados para a criação de protótipos de software.
É importante lembrar-nos de que apesar de termos excelentes razões para utilizarmos o VBA para solucionar diversos dos nossos problemas e necessidades, não poderemos envolvê-lo em tudo. O Excel tem uma grande variedade de recursos. Mesmo que sejamos Power Users é muito provável não estarmos familiarizados com todos estes. Antes de decidirmos implementar alguma solução em VBA, procuremos cuidadosamente saber se já não existe um recurso similar ou uma maneira mais simples para obtermos o que desejamos.
Programação VBA
Usando o código para fazer as aplicações fazerem coisas. Podemos achar que escrever código é algo misterioso ou difícil, mas todos os dias usamos os princípios básicos no nosso dia-a-dia.
Os aplicativos do Office forma construídos de tal forma que são compostos por coisas chamadas de Objetos. Estes podem receber instruções. Podemos interagir com os aplicativos através do envio de instruções para vários objetos da aplicação. Esses objetos são muitos, variados, e flexíveis, mas têm os seus limites. Só podem fazer aquilo que foram projetados para fazer, e só farão o que instruí-los a fazer.
Objetos
Objetos de programação relacionam-se entre si de forma sistemática em uma hierarquia chamada de object model (OM = modelo de objeto) da aplicação. O OM espelha aproximadamente o que vemos na interface do usuário, por exemplo, o OM do Excel contém: Application, Workbook, Sheet, e Chart objects, entre muitos outros. O OM é um mapa conceitual do aplicativo e dos seus recursos.
Propriedades e métodos
Podemos manipular os objetos, definindo suas propriedades e chamando os seus métodos. Definir uma propriedade altera alguma característica do objeto. Chamar um método faz com que o objeto realize alguma ação. Por exemplo, o objeto Workbook tem um método Close, que fecha o Workbook e uma propriedade ActiveSheet que representa a planilha ativa no Workbook.
Coleções
Muitos objetos encontram-se nas versões singular e plural: Workbook e Workbooks, Worksheet e Worksheets, e assim por diante. As versões plurais são chamadas de coleções. Objetos de coleção são usados para executarem uma ação em vários itens da coleção.
Macros e Editor do Visual Basic
Agora que você sabe algo sobre como o Microsoft Excel 2010 expõe seu modelo de objeto, você pode tentar chamar métodos de objetos e definição de propriedades de objetos. Para isso, você deve escrever seu código em um lugar e de uma forma que o Office pode entender, normalmente, usando o Visual Basic Editor. Embora seja instalado por padrão, muitos usuários não sabem que é ainda disponível até que seja ativado na fita.
Guia Desenvolvedor
Todos os aplicativos do Office 2010 usar a fita. Um guia sobre a fita é o guia do desenvolvedor, onde você acessar o Editor do Visual Basic e ferramentas para desenvolvedores outros. Como o Office 2010 não exibir a guia Desenvolvedor por padrão, você deve habilitá-lo usando o seguinte procedimento:
Para habilitar a guia Desenvolvedor
- Na guia Arquivo, selecione Opções para abrir a caixa de diálogo Opções do Excel.
- Clique em Personalizar Faixa de Opções no lado esquerdo da caixa de diálogo.
- Em Escolher comandos de, no lado esquerdo da caixa de diálogo, selecione Comandos Populares.
- Em Personalizar a fita no lado direito da caixa de diálogo, selecione as guias principais, e em seguida, selecione a caixa de seleção Desenvolvedor.
- Clique em OK.
Após o Excel exibe a guia Desenvolvedor, observe a localização do Visual Basic, macros e botões de segurança de macrona guia.
Figura 1. Guia Desenvolvedor no Excel 2010
Questões de segurança
Clique no botão Segurança de macro para especificar quais as macros podem executar e em que condições. Embora desonestos código de macro pode danificar seriamente o computador, as condições de segurança que o impedem de executar macros úteis pode prejudicar seriamente a sua produtividade. Macro de segurança é um tema complexo e complicado que você deve estudar e entender se você trabalha com macros do Excel.
Para os fins deste artigo, estar ciente de que, se o Aviso de Segurança: Macros foram desativados barra aparece entre a fita ea planilha quando você abrir um livro que contém uma macro, você pode clicar no botão Conteúdo Enable para ativar as macros.
Além disso, como medida de segurança, você não pode salvar uma macro no formato de arquivo padrão do Excel (xlsx)., Em vez disso, você deve salvar a macro em um arquivo com uma extensão especial, xlsm..
Editor do Visual Basic
Este procedimento a seguir mostra como criar um novo livro em branco para armazenar seus macros. Você pode, então, salvar o livro no formato de xlsm..
Para criar um novo livro em branco
- Clique no botão Macros na guia Desenvolvedor.
- Na caixa de diálogo que aparece macro, tipo, Olá em Nome da macro.
- Clique no botão Criar para abrir o Editor de Visual Basic com os contornos de uma nova macro já digitou dentro
VBA é uma linguagem de programação completa, com um ambiente de programação correspondente completo. Este artigo analisa apenas as ferramentas que você usa para começar a programação, e que exclui a maioria das ferramentas no Editor do Visual Basic. Com esta ressalva, fechar a janela Propriedades do lado esquerdo do Editor do Visual Basic, e ignorar as duas listas suspensas que aparecem acima do código.
Figura 2. Editor do Visual Basic
O Editor do Visual Basic contém o seguinte código.
Sub Olá () End Sub
Sub significa Subrotina, que você pode definir para agora como "macro". Executando o
Hello
macro executa qualquer código que está entre Sub Hello()
e End Sub
.
Agora edite a macro para que ele se parece com o seguinte código.
Sub Olá () MsgBox ("Olá, mundo!") End Sub
Volte para a guia Desenvolvedor no Excel e clique no botão Macros novamente.
Selecione a macro Olá na lista que aparece e, em seguida, clique em Executar para exibir uma caixa de mensagem pequena que contém o texto "Olá, mundo!"
Você acabou de criar e implementado personalizado código VBA no Excel. Clique em OK na caixa de mensagem para fechá-lo e concluir a execução da macro.
Se a caixa de mensagem não aparecer, verifique as configurações de segurança de macro e reiniciar o Excel.
Fazendo Macros Acessível
Você também pode obter a caixa de diálogo Macros da guia View, mas se você usar uma macro com freqüência, você pode achar que é mais conveniente para acessá-lo com um atalho de teclado ou um botão de barra de ferramentas de Acesso Rápido.
Para criar um botão para a macro Olá na Barra de Ferramentas de Acesso Rápido, use o seguinte procedimento.
O procedimento a seguir descreve como fazer um botão para uma macro na barra de ferramentas de Acesso Rápido:
Para criar um botão para uma macro na barra de ferramentas de Acesso Rápido
- Clique na guia Arquivo.
- Clique em Opções para abrir a caixa de diálogo Opções do Excel e, em seguida, clique em Barra de Ferramentas de Acesso Rápido.
- Na lista em Escolher comandos de:, escolha Macros. Encontre o texto que é semelhante ao Book1 Olá! Na lista que aparece e selecione esse texto.
- Clique no botão Adicionar >> para adicionar a macro para a lista no lado direito, e em seguida, clique no botãoModificar ... para selecionar uma imagem de botão para associar com o macro.
- Clique em OK. Você deverá ver seu novo botão na barra de ferramentas Acesso rápido acima na guia Arquivo.
Agora você pode rapidamente executar a macro, a qualquer momento, sem usar o Developer guia-lhe dar uma tentativa.
Um exemplo do mundo real
Suponha que você tem um livro que contém as listas em um grande número de planilhas e que pretende mudar o nome de cada planilha para combinar com o título da lista em que planilha. Não cada planilha tem uma lista sobre ele, mas se isso acontecer, o título está na célula B1, e se isso não acontecer, a célula B1 está em branco. Os nomes de planilhas sem listas devem ser deixados sozinhos.
Normalmente, isso pode ser uma tarefa complexa, que envolve olhar para cada planilha para ver se ele tem uma lista, copiando o nome, se isso acontecer, clique na guia da planilha e, em seguida, colar o novo nome. Em vez de realizar todas essas etapas manualmente, usar o Excel VBA para renomear as folhas automaticamente.
Aprender sobre objetos
Para resolver um problema de programação VBA, você deve primeiro descobrir quais objetos o código irá manipular. Para pesquisar essa informação, uma ferramenta essencial é o Excel Referência Object Model , que faz parte da Referência do Desenvolvedor do Excel 2007 no Microsoft Developer Network (MSDN).
Estes materiais de referência será atualizado para o Excel 2010, quando é lançado publicamente, mas o Excel 2007 Referência do desenvolvedor é adequada para a maioria dos fins do Excel 2010.
Figura 3. Referência Excel Object Model no MSDN
O primeiro passo é descobrir como manipular os objetos particulares que você precisa para trabalhar com para realizar sua tarefa, por exemplo, planilhas, nomes de planilhas, células e conteúdo de células. No Excel, há pelo menos duas maneiras de abordar o problema:
- Ir diretamente para o Modelo de Referência de Objetos.
- Anote algumas das ações que deseja automatizar, ver como o código gravado manipula os objetos, e depois ir para o Modelo de Referência de Objetos para obter mais informações.
As opiniões variam sobre qual abordagem é preferível, mas por agora, tente usar o Macro Recorder primeiro.
Usando o Macro Recorder
Às vezes, uma simples macro gravada é tudo que você precisa, nestes casos, você não precisa nem olhar o código. Mais frequentemente, a gravação por si só não é suficiente. Em vez disso, é um ponto de partida para o processo seguinte.
Para usar o gravador de macro como um ponto de partida para a sua solução
- Registrar as ações que deseja código.
- Rever o código e encontrar as linhas que realizam essas ações.
- Excluir o resto do código.
- Modificar o código gravado.
- Adicionar variáveis, estruturas de controle, e outros códigos que o Macro Recorder não pode gravar.
Comece a sua investigação por gravar uma macro que renomeia uma planilha para novo nome. Você pode então usar a macro gravada para desenvolver a sua própria macro que renomeia várias planilhas com base em seu conteúdo.
Para gravar uma macro que renomeia uma planilha
- Clique em Gravar Macro na guia Desenvolvedor.
- Nomear os RenameWorksheets macro, renomear Sheet1 para novo nome e clique em Parar gravação.
- Vá para a guia Desenvolvedor ou Vista, clique no botão Macros e escolha Editar para abrir o Editor do Visual Basic.
O código no Editor do Visual Basic deve ser semelhante ao seguinte.
Sub RenameWorksheets () ' 'RenameWorksheets Macro ' ' Sheets ("Sheet1"). Selecione Nome Sheets ("Sheet1"). = "Nome novo" End Sub
As primeiras quatro linhas após a linha de Sub são comentários. Qualquer linha que começa com um apóstrofo é um comentário e não tem efeito sobre o que a macro faz. Os principais usos para comentários são os seguintes:
- Para tornar o código mais fácil de entender, não apenas para você, mas para qualquer pessoa que pode precisar modificar o código mais tarde.
- Para desativar temporariamente uma linha de código (chamado de comentá-la).
Os quatro comentários neste macro gravada servir nem a propósito, para excluí-los.
A próxima linha usa o método Select para selecionar o membro Sheet1 do objeto da coleção Sheets. No código VBA, não é geralmente necessário para selecionar objetos antes de manipulá-los, apesar de que é o que o Macro Recorder faz. Em outras palavras, esta linha de código é redundante, de modo que você pode excluí-lo também.
A última linha da macro gravada modifica a propriedade do nome do membro Sheet1 da coleção Sheets. Esta é a linha de manter.
Depois de fazer as alterações, o código gravado deve agora olhar como o seguinte.
Sub RenameWorksheets () Nome Sheets ("Sheet1"). = "Nome novo" End Sub
Alterar manualmente a folha de chamada Novo nome de volta para Sheet1, em seguida, executar a macro. O nome deve mudar para novo nome.
Modificando o código gravado
Agora é hora de pesquisar a coleção de folhas que o Macro Recorder usado. O tema Folhas na Referência Object Model inclui o seguinte texto.
"A coleção de folhas pode conter gráfico ou planilha objetos. Se você precisa trabalhar com folhas de um só tipo, consulte o tópico objeto para esse tipo de folha."
Você só está trabalhando com planilhas, para mudar o código para o seguinte.
Sub RenameWorksheets () Worksheets ("Sheet1") Nome. = "Nome novo" End Sub
Looping
Uma limitação do código até este ponto é que ele só faz uma alteração em uma planilha. Você pode adicionar mais uma linha para cada planilha que deseja renomear, mas que se você não sabe quantas planilhas existem, ou que seus nomes atuais são? Você precisa encontrar uma maneira de aplicar uma regra para cada folha do livro.
VBA tem uma construção chamada Para cada loop que é o ideal. O loop For Each examina cada item em um objeto de coleção, como planilhas e pode ser usado para realizar uma ação (como alterar o nome) para alguns ou todos esses itens.
Para mais informações sobre o loop For Each, consulte a Referência de linguagem VBA . Clique em "Visual Basic Tópicos conceituais", então "usando para cada ... próximas declarações". Também, estar ciente de que a referência da linguagem VBA, como o Modelo de Referência de objeto, devolverá de forma ampla o tempo que você gasta navegando, e é um excelente lugar para procurar idéias se você ficar preso trabalhando em código.
Usando o exemplo em terceiro lugar no "usando para cada ... próximas declarações" tópico, edite a macro para que ele se parece com o seguinte código.
Sub RenameWorksheets () Para cada myWorksheet em planilhas myWorksheet.Name = "nome novo" Próximo End Sub
myWorksheet
é uma variável, isto é, o que ele representa varia. Neste caso, o myWorksheet
variável sucessivamente representa cada planilha na coleção Worksheets. Você não tem que usar myWorksheet
, você poderia usar "x", "ws", "WorksheetToRenameAfterTheContentsOfCellB1", ou (com algumas restrições) quase qualquer nome que você quiser.Uma boa regra de ouro é usar nomes de variáveis que são longas o suficiente para lembrá-lo de que a variável representa, mas não tão longa como a desorganização do código.
Se você executar a macro em seu estado atual, ela produz um erro porque o Excel exige cada planilha em uma pasta de trabalho para ter um nome único, mas a linha a seguir instrui o Excel para dar a cada planilha o mesmo nome.
myWorksheet.Name = "nome novo"
Para corrigir a linha de modo que você pode verificar que o para cada fábrica, laço, mudar a linha para o seguinte.
myWorksheet.Name = myWorksheet.Name & ", mudou"
Em vez de tentar dar a cada planilha o mesmo nome, esta linha muda o nome atual de cada planilha (
myWorksheet.Name
) para o nome atual com "-changed" anexado a ele.Renomeando útil
A macro está ficando perto de algo que possa realmente resolver o problema na mão. O que você precisa agora é uma forma de levar informações das planilhas-se especificamente de célula B1 em cada planilha e colocar essa informação para os nomes das planilhas.
Desta vez, em vez de usar o gravador de macros para descobrir como fazer referência a uma célula, dar um palpite e ver se usando o objeto de celular vai funcionar. É um bom palpite, mas se você abrir o Modelo de Referência de Objetos e de pesquisa para o objeto Cell, você achar que não há objeto Cell! Há um objeto CellFormat embora.
O tema objeto CellFormat inclui o seguinte código no primeiro exemplo de código.
'Definir o interior da célula A1 para amarelo. Range ("A1"). Selecione
Acontece que você usa Gama para especificar um intervalo de células ou apenas uma célula individual. Mais uma vez, você não precisa da parte. Select, mas você precisa descobrir como fazer referência ao conteúdo do objeto Range, ao contrário do objeto Range si. Se você vai para o tema objeto Range, você pode ler que Gama tem dois métodos e propriedades. O conteúdo de um Range é uma coisa, não uma ação, então provavelmente seria uma propriedade. Se você digitalizar para baixo na lista, você pode ver a propriedade Value. Então, tente o seguinte.
Sub RenameWorksheets () Para cada myWorksheet em planilhas myWorksheet.Name = myWorksheet.Range ("B1"). Valor Próximo End Sub
Você receberá um erro se você executar isso em um livro que contém planilhas onde B1 está vazia, porque um intervalovazio tem um valor de "" (uma seqüência de texto vazio), que não é um nome de planilha legal. É hora de criar alguns dados de exemplo de qualquer maneira. Faça as três folhas no livro semelhante à figura abaixo, e em seguida, executar a macro.
Figura 4. Os dados da amostra para a macro RenameWorksheets
Os nomes de planilha deve mudar de acordo.
Verificação de células vazias
Como observado anteriormente, a macro falhará se qualquer das células B1 na pasta de trabalho estão vazios. Em vez de verificar manualmente cada planilha, você pode codificar a macro para fazer isso por você. Antes da
myWorksheet.Name
linha, adicione a seguinte linha de código.Se myWorksheet.Range ("B1"). Valor <> "" Then
E depois do
myWorksheet.Name
linha adicione o seguinte texto. End If
Isso é chamado de um If ... Then. O If ... Then instrui o Excel para fazer o que for nas linhas entre a linha ea Se End If linha, mas somente se a condição na linha Se for cumprida. No exemplo, a linha seguinte especifica a condição de cumprir.
myWorksheet.Range ("B1"). Valor <> ""
A
<>
significa "não é igual a", e as aspas, sem nada entre eles representam uma seqüência de texto vazio, isto é, sem texto algum. Portanto, quaisquer que sejam as linhas de código vir entre o Se eo Fim Se só será executado se o valor em B1 não é igual a nada, isto é, se houver texto na célula B1.
Para mais informações sobre a Se ... Então instrução, consulte a Referência de linguagem VBA. (O nome completo é "declaração If ... Then ... Else", onde Else é um componente opcional.)
Declarações de variáveis
Outra melhoria que você deve fazer para o macro é colocar uma declaração do
myWorksheet
variável no início da macro. MyWorksheet Dim Planilha
Dim é a abreviação de "Dimension", e Planilha é o tipo dessa variável particular. Esta declaração diz VBA que tipo de entidade
myWorksheet
representa. Note que depois de digitar Como, o Editor do Visual Basic exibe um pop-up que lista todos os tipos disponíveis de variáveis. Isso é um exemplo de tecnologia IntelliSense, isto é, o Editor do Visual Basic responde ao que determina que você está tentando fazer e oferece uma lista de opções adequadas. Você pode escolher uma opção a partir da lista ou apenas continuar a escrever.
Apesar de declarações de variáveis não são necessárias em VBA, usando-se fortemente recomendado! Declarações de variáveis tornam muito mais fácil manter o controle de suas variáveis e para rastrear erros no código. Além disso, esteja ciente de que se você declarar uma variável com um tipo de objeto (como Planilha), o IntelliSense exibe uma lista adequada de propriedades e métodos associados a esse objeto, se você usar a variável de objeto no final do macro.
Comentários
A macro é complexo o suficiente agora para incluir alguns comentários que lembrá-lo que o código está fazendo. O número de comentários para usar é em parte uma questão de estilo pessoal, mas, em geral, também muitos comentários são melhores do que muito poucos. Código geralmente precisa ser modificado e atualizado ao longo do tempo. Sem comentários, pode ser difícil de entender o que está acontecendo no código, especialmente se a pessoa que modifica o código não é a mesma pessoa que o escreveu, em primeiro lugar. Adicionando comentários para a condição Se e para a linha que renomeia resultados das planilhas, no código a seguir.
Sub RenameWorksheets () MyWorksheet Dim Planilha Para cada myWorksheet em planilhas "Certifique-se que a célula B1 não está vazio Se myWorksheet.Range ("B1"). Valor <> "" Then 'Renomear a planilha para o conteúdo da célula B1 myWorksheet.Name = myWorksheet.Range ("B1"). Valor End If Próximo End Sub
Para testar a macro, renomear as planilhas de volta para Plan1, Plan2 e Plan3 e excluir o conteúdo da célula B1 em uma ou mais das planilhas. Executar a macro para verificar se ele renomeia as planilhas que têm texto na célula B1 e deixa as outras planilhas sozinho. A macro funciona para qualquer número de planilhas, com qualquer combinação de células B1 povoadas e vazio.
Mais coisas que você pode fazer com VBA
Esta seção examina mais algumas coisas que você pode fazer com o VBA no Excel 2010. Os exemplos desta seção são projetados para dar-lhe um sentido de os recursos do VBA em vez de focalizar específicas cenários do mundo real. Você pode achar que é útil para analisar as informações na referência de modelo de objeto sobre os objetos em cada passo como você trabalhar com os exemplos.
Importância de Ser Aberto
Uma boa maneira de aprender a programação em geral, e VBA Excel em particular, é uma estratégia em que você tentar alguma coisa, fazê-lo funcionar, e então pergunte a si mesmo perguntas como:
- O que eu poderia tentar em seguida?
- O que eu quero aprender primeiro, dada a forma como eu quero usar VBA?
- O que poderia ser apenas divertido ou interessante saber?
- O que eu sou curioso sobre?
O leitor é fortemente encorajados a investigar o que avenidas abrir o caminho para o conhecimento.
Gráficos
Uma tarefa comum no Excel é criar um gráfico com base em um intervalo de células. Criar uma nova macro chamadaAssortedTasks e digite o seguinte texto no Editor do Visual Basic.
MyChart Dim ChartObject
Adicione uma linha para criar o objeto gráfico e atribuir o
myChart
variável a ele. Definir myChart = ActiveSheet.ChartObjects.Add (100, 50, 200, 200)
Os números entre os parênteses determinar a posição e tamanho do gráfico. Os dois primeiros números são as coordenadas do canto superior esquerdo, eo segundo dois números são a largura e altura.
Criar uma nova planilha em branco e executar a macro. O gráfico que ele cria é inútil porque o gráfico não tem dados.Excluir o gráfico que você acabou de criar e adicionar as seguintes linhas ao final do macro.
Com myChart . Chart.SetSourceData Fonte: Seleção = End With
Este é um padrão comum na programação VBA. Primeiro, você cria um objeto e atribuir a uma variável, então você usa o ... Com Final Com a construção de fazer as coisas com o objeto. O código de exemplo instrui o gráfico para usar a seleção atual para seus dados. (
Selection
é um valor para o parâmetro Source do método SetSourceData, não um valor de uma propriedade de objeto, de modo a sintaxe VBA exige que você use dois pontos e um sinal de igual ( :=
) em vez de apenas um sinal de igual ( =
) para atribuir o valor).
Digite alguns números nas células A1: A5, selecione as células e, em seguida, executar a macro. O gráfico mostra-se como o tipo de padrão, um gráfico de barras.
Figura 5. Gráfico de barras criado usando VBA
Se você não gosta do gráfico de barras, você pode alterá-lo para algum outro tipo de gráfico usando o código que é semelhante ao seguinte.
Com myChart . Chart.SetSourceData Fonte: Seleção = . Chart.ChartType = xlPie End With
xlPie é um exemplo de um alto-constante, também conhecida como uma constante enumerada. Há muitos destes casos durante Excel, e eles são exaustivamente documentado. Para mais informações sobre constantes internas, consulte a seção Enumerações do Modelo de Referência de Objetos. Por exemplo, as constantes para tipos de gráficos são listadas sob "Enumeration XlChartType".
Você pode modificar os dados. Por exemplo, tente adicionar esta linha logo após a declaração da variável.
Application.ActiveSheet.Range ("A4") valor. = 8
Você pode obter a entrada do usuário, e usar essa entrada para modificar os dados.
myInput = InputBox ("Por favor digite um número:") Application.ActiveSheet.Range ("a5") Valor. = MyInput
Por fim, adicione as seguintes linhas ao final do macro.
ActiveWorkbook.Save ActiveWorkbook.Close
A macro completa agora deve ser algo como o seguinte.
AssortedTasks sub () MyChart Dim ChartObject Application.ActiveSheet.Range ("A4") valor. = 8 myInput = InputBox ("Por favor digite um número:") Application.ActiveSheet.Range ("a5") Valor. = MyInput Definir myChart = ActiveSheet.ChartObjects.Add (100, 50, 200, 200) Com myChart . Chart.SetSourceData Fonte: Seleção = . Chart.ChartType = xlPie End With ActiveWorkbook.Save ActiveWorkbook.Close End Sub
Verifique se as células A1: A5 são ainda selecionado, executar a macro, digite um número na caixa de entrada e, em seguida, clique em OK. O código salva e fecha o livro. Reabrir o livro e observe a mudança para o gráfico de pizza.
UserForms
A seção anterior mostrou como usar uma caixa de entrada simples para obter a entrada do usuário. Além da caixa de mensagem correspondente que exibe informações, o VBA oferece amplos recursos que você pode usar para criar caixas de diálogo personalizadas para controles de código que são colocados diretamente em planilhas, ou para manipular as caixas de diálogo que são construídos para o Excel. Para mais informações sobre esses recursos, consulte Controles, caixas de diálogo e Formas na Referência do desenvolvedor Excel 2007.
Esta seção completa este olhar introdutório em Excel VBA dando uma olhada rápida no UserForms.
Na guia Desenvolvedor, clique no botão Visual Basic para abrir o Editor do Visual Basic, e depois vá para o menu Inserir e escolha UserForm para abrir o Modo Design UserForm.
Você verá duas janelas. Um representa a UserForm que você está criando e de outro, a caixa de ferramentas, mostra os vários controles que você pode adicionar ao seu formulário de usuário, por exemplo, botões de comando, botões de opção, caixas de seleção e assim por diante. Você pode mover o mouse sobre um controle caixa de ferramentas para ver que tipo de controle que ele cria.
Crie um formulário de usuário muito simples com um único botão que executa a macro Olá a partir no início deste artigo.Na Caixa de Ferramentas, pressione o controle CommandButton, e arraste-o para o formulário de usuário para criar um botão de comando. Direito do mouse no botão de comando e escolha View Code.
O Sub que você vê é um esqueleto para um procedimento de evento, que é executado quando um determinado evento ocorrer. Neste caso, como o nome da Sub indica, o evento que executa o código é um clique em CommandButton1.Adicione a seguinte linha ao procedimento de evento.
Executar ("Olá")
O Editor do Visual Basic agora deve ser semelhante ao seguinte.
Figura 6. CommandButton1_Click procedimento de evento
Guarde o livro, vá ao menu Janela e escolha UserForm1 (UserForm) para voltar a ver o UserForm. Clique na seta verde na barra de ferramentas para executar o UserForm. Quando a caixa de diálogo aparecer, clique no botão de comando para executar a macro Olá, que exibe o "Olá, mundo!" caixa de mensagem. Feche a caixa de mensagem para retornar ao formulário de usuário em execução, em seguida, fechar o UserForm correndo para voltar para o modo Design.
Qual é o próximo?
Você pode achar que as informações contidas neste artigo, quando combinado com algumas experiências e tempo de qualidade estudar o Modelo de Referência de Objetos e Referência de linguagem VBA, lhe dá informações suficientes para realizar qualquer tarefa que o motivou a começar a aprender VBA. Se assim for, ótimo! Se não, um bom passo seguinte é o de ampliar o seu escopo para um entendimento mais geral do VBA.
Uma maneira de aprender mais sobre VBA é estudar código de trabalho. Além dos exemplos no Modelo de Referência de Objetos e Referência de linguagem VBA, há uma quantidade enorme de Excel VBA código disponível a partir de várias fontes online, incluindo artigos no MSDN, sites que são mantidos por profissionais Microsoft Most Valuable Professionals (MVPs), que especializar em Excel, e outros que você pode encontrar com uma rápida pesquisa da web.
O código nesses recursos pode ajudá-lo a resolver seus problemas imediatos de codificação e para lhe dar idéias para projetos que você pode não ter pensado ainda.
Se você prefere buscar um estudo mais sistemático de VBA, existem vários bons livros disponíveis no VBA, e vários bons comentários de cada um desses livros sobre a Web que podem ajudar você a escolher os melhores para o seu estilo de aprendizagem.
Reference: Ben Chinowsky, SDK Bridge - November 2009
Tags: VBA, Excel, Excel 2010, UI, Ben Chinowsky, Office,