4 erros que você pode evitar ao programar macros do Excel com o VBA

Código simples e macros são as chaves para superpoderes do Microsoft Excel. Mesmo os não-programadores podem facilmente adicionar funcionalidades impressionantes às suas planilhas com Virtual Basics for Applications (VBA). Apenas evite esses erros iniciantes de programação!

Código simples e macros são as chaves para superpoderes do Microsoft Excel.  Mesmo os não-programadores podem facilmente adicionar funcionalidades impressionantes às suas planilhas com Virtual Basics for Applications (VBA).  Apenas evite esses erros iniciantes de programação!
Propaganda

Microsoft Excel já é uma ferramenta de análise de dados muito capaz, mas com a capacidade de automatizar tarefas repetitivas com macros Como enviar e-mails de uma planilha do Excel usando Scripts VBA Como enviar e-mails de uma planilha do Excel usando Scripts VBA Mostraremos como configurar e-mails automatizados a partir do Excel usando os scripts Collaboration Data Objects, (CDO) e VBA. Nossos modelos de código tornam isso muito mais fácil do que parece! Leia mais escrevendo código simples em (VBA), é muito mais poderoso. No entanto, usado incorretamente, o VBA pode causar muitos problemas.

Mesmo se você não for um programador, o VBA oferece funções simples que lhe permitem adicionar algumas funcionalidades realmente impressionantes às suas planilhas, então não saia ainda!

Se você é um guru do VBA, quem cria painéis no Excel Crie seu próprio painel climático nesta classe master do Google Spreadsheet Crie seu próprio painel climático nesta classe master do Google Spreadsheet Gostaria de transformar sua conta do Google Drive em um sistema inteligente de análise meteorológica e viver uma fantasia de Star Trek? Está bem! Leia mais, ou um novato, que só sabe escrever scripts simples que fazem cálculos básicos de células, você pode seguir técnicas de programação fáceis, que ajudarão você a melhorar as chances de escrever código limpo e livre de bugs.

Começando com o VBA

Se você não programou em VBA no Excel antes, habilitar as ferramentas do desenvolvedor para fazer isso é realmente muito fácil. Basta ir em Arquivo > Opções e depois Personalizar Faixa de Opções . Basta mover o grupo de comando do desenvolvedor do painel esquerdo para a direita.

excel-vba1

Verifique se a caixa de seleção está ativada e agora a guia Desenvolvedor aparecerá no menu do Excel.

excel-vba2

A maneira mais fácil de entrar na janela do editor de código neste momento é apenas clicar no botão View Code em Controls no menu Developer.

1. Nomes Variáveis ​​Horríveis

Agora que você está na janela de código, é hora de começar a escrever código VBA Como você pode criar seu próprio aplicativo simples com o VBA Como você pode criar seu próprio aplicativo simples com o VBA Para aqueles que realmente gostariam de poder escrever seu próprio aplicativo, mas nunca digitei uma única linha de código antes, vou orientá-lo fazendo sua própria ... Leia Mais. O primeiro passo importante na maioria dos programas, seja no VBA ou em qualquer outro idioma, é definir suas variáveis.

Ao longo de minhas duas décadas de escrita em código, deparei-me com muitas escolas de pensamento quando se trata de convenções de nomenclatura variáveis ​​e aprendi algumas coisas da maneira mais difícil. Aqui estão as dicas rápidas para criar nomes de variáveis:

  • Faça-os o mais curto possível.
  • Torne-os o mais descritivo possível.
  • Prefácio-los com o tipo de variável (booleano, inteiro, etc ...).
  • Lembre-se de usar o escopo certo (veja abaixo).

Aqui está uma captura de tela de exemplo de um programa que eu uso frequentemente para fazer WMIC Windows chama do Excel para reunir informações de PC Como ver todas as informações do seu PC usando um simples Excel VBA Script Como ver todas as informações do seu PC usando um simples Excel Excel Script VBA e 10 minutos de trabalho lhe darão informações mais detalhadas sobre o seu computador do que você jamais imaginou ser possível. Soa bom demais para ser verdade? Isso é o Windows, se você souber como usá-lo. Consulte Mais informação .

excel-vba3

Quando você quiser usar as variáveis ​​dentro de qualquer função dentro do módulo ou objeto (vou explicar isso abaixo), então você precisa declará-la como uma variável “pública”, prefazendo a declaração com Public . Caso contrário, as variáveis ​​serão declaradas, prefazendo-as com a palavra Dim .

Como você pode ver, se a variável for um inteiro, ela é precedida por int . Se é uma string, então str . Isso ajuda mais tarde, enquanto você está programando, porque você sempre saberá que tipo de dados a variável contém, apenas olhando para o nome. Você também notará que, se houver algo como uma string que contenha um nome de computador, a variável será chamada strComputerName .

Evite criar nomes de variáveis ​​muito complicados ou confusos que só você entenda. Torne mais fácil para outro programador chegar atrás de você e entender o que isso significa!

Outro erro que as pessoas cometem é deixar nomes de folhas como o padrão "Folha1", "Folha2", etc ... Isso adiciona mais confusão a um programa. Em vez disso, nomeie as folhas para que façam sentido.

excel-vba4

Dessa forma, quando você se refere ao nome da planilha em seu código VBA do Excel Usando o VBA para automatizar sessões do Internet Explorer a partir de uma planilha do Excel Usando o VBA para automatizar sessões do Internet Explorer em uma planilha do Excel Maneiras surpreendentes usando o Visual Basic para aplicativos (VBA) script de qualquer aplicativo que ofereça suporte a ele, como o Word, Outlook ou Excel. Leia mais, você está se referindo a um nome que faz sentido. No exemplo acima, eu tenho uma planilha onde eu pego informações de rede, então eu chamo a planilha “Network”. Agora, no código, sempre que eu quiser fazer referência à planilha Network, posso fazê-lo rapidamente sem procurar o número da planilha.

2. Quebrando em vez de loop

Um dos problemas mais comuns programador mais recente tem 6 hábitos de vida que a programação poderia ensiná-lo hoje 6 hábitos de vida que a programação poderia ensiná-lo hoje Tudo que você precisa saber sobre viver uma vida bem sucedida, você pode obter de um programa de computador. Não acredita em mim? Leia. Leia mais quando eles começam a escrever código está lidando corretamente com loops. E como muitas pessoas que usam o Excel VBA são muito novatas em código, o looping é epidêmico.

O loop é muito comum no Excel, porque muitas vezes você está processando valores de dados em uma linha inteira ou coluna, portanto, é necessário executar um loop para processar todos eles. Novos programadores geralmente querem apenas sair de um loop (seja um loop For ou While) instantaneamente quando uma determinada condição é verdadeira.

excel-vba5

Você pode ignorar a complexidade do código acima, apenas observe que dentro da instrução IF interna, existe uma opção para sair do loop For se a condição for verdadeira. Aqui está um exemplo mais simples:

For x = 1 To 20 If x = 6 Then Exit For y = x + intRoomTemp Next i 

Novos programadores adotam essa abordagem porque é fácil. Quando ocorre uma condição que você está esperando para sair de um loop, a tentação de simplesmente saltar para fora dele é forte, mas não o faça.

Mais frequentemente do que não, o código que vem depois que “quebra” é importante para processar, mesmo a última vez através do loop antes de sair. Uma maneira muito mais limpa e mais profissional de lidar com as condições em que você deseja deixar um loop na metade do caminho é incluir essa condição de saída em algo como uma instrução While.

 While (x>=1 AND x<=20 AND x6) For x = 1 To 20 y = x + intRoomTemp Next i Wend 

Isso permite um fluxo lógico de seu código, com a última execução quando x é 5 e, em seguida, saindo normalmente quando o loop For conta até 6. Não há necessidade de incluir comandos inábeis ou de SAÍDA no meio do loop.

3. Não usando matrizes

Outro erro interessante que os novos programadores VBA - Variáveis ​​e DataTypes Tendo introduzido e falado um pouco sobre Programação Orientada a Objetos antes e de onde vem o seu homônimo, eu pensei que é hora de nós percorrer os princípios absolutos da programação de uma maneira não específica da linguagem. Isto ... Leia Mais make está tentando processar tudo dentro de numerosos loops aninhados que filtram através de linhas e colunas durante o processo de cálculo.

Embora isso possa funcionar, ele também pode levar a grandes problemas de desempenho, se você tiver que executar constantemente os mesmos cálculos nos mesmos números da mesma coluna. Looping através dessa coluna e extrair os valores a cada momento não é apenas tedioso para programar, é um assassino no seu processador. Uma maneira mais eficiente de lidar com longas listas de números é utilizar uma matriz.

Se você nunca usou uma matriz antes, não tenha medo. Imagine uma matriz como uma bandeja de cubos de gelo com um certo número de “cubos” nos quais você pode colocar informações. Os cubos são numerados de 1 a 12 e é assim que você “coloca” dados neles.

bandejas icecube

Você pode definir facilmente uma matriz digitando Dim arrMyArray (12) como Integer .

Isso cria uma "bandeja" com 12 slots disponíveis para você encher.

Aqui está o que um código de loop de linha sem um array pode parecer:

 Sub Test1() Dim x As Integer intNumRows = Range("A2", Range("A2").End(xldown)).Rows.Count Range("A2").Select For x = 1 To intNumRows If Range("A" & str(x)).value< 100 then intTemp = (Range("A" & str(x)).value) * 32 - 100 End If ActiveCell.Offset(1, 0).Select Next End Sub 

Neste exemplo, o código está processando através de cada célula do intervalo e executando o cálculo da temperatura.

Mais tarde, no programa, se você quiser executar algum outro cálculo nesses mesmos valores, será necessário duplicar esse código, processá-lo em todas essas células e realizar o novo cálculo.

Agora, se você usar uma matriz, poderá armazenar os 12 valores da linha em sua matriz de armazenamento conveniente. Então, mais tarde, sempre que você quiser executar cálculos com esses números, eles já estarão na memória e prontos para serem usados.

 Sub Test1() Dim x As Integer intNumRows = Range("A2", Range("A2").End(xldown)).Rows.Count Range("A2").Select For x = 1 To intNumRows arrMyArray(x-1) = Range("A" & str(x)).value) ActiveCell.Offset(1, 0).Select Next End Sub 

O “x-1” para apontar para o elemento da matriz é necessário apenas porque o loop For começa em 1. Os elementos da matriz precisam começar em 0.

Mas uma vez que você tenha sua matriz carregada com os valores da linha, mais tarde, no programa, você pode juntar todos os cálculos desejados usando a matriz.

 Sub TempCalc() For x = 0 To UBound(arrMyArray) arrMyTemps(y) = arrMyArray(x) * 32 - 100 Next End Sub 

Este exemplo percorre toda a matriz de linhas (o UBound fornece o número de valores de dados na matriz), faz o cálculo de temperatura e, em seguida, coloca-o em outra matriz chamada arrMyTemps.

Você pode ver o quanto mais simples é o segundo código de cálculo. E, a partir daí, sempre que você quiser realizar mais cálculos no mesmo conjunto de números, sua matriz já estará pré-carregada e pronta para ser usada.

4. Usando muitas referências

Se você estiver programando em Visual Basic completo ou VBA, precisará incluir “referências” para acessar determinados recursos, como acessar um banco de dados do Access ou gravar saída em um arquivo de texto.

As referências são como "bibliotecas" cheias de funcionalidades que você pode usar se ativar esse arquivo. Você pode encontrar Referências na visualização Desenvolvedor clicando em Ferramentas no menu e, em seguida, clicando em Referências .

excel-vba6

O que você encontrará nesta janela são todas as referências atualmente selecionadas para o seu projeto atual do VBA.

excel-vba7

Na minha experiência, as seleções aqui podem mudar de uma instalação do Excel para outra e de um PC para outro. Depende muito do que outras pessoas fizeram com o Excel neste PC, se certos complementos ou recursos foram adicionados ou habilitados, ou se alguns outros programadores podem ter usado certas referências em projetos anteriores.

A razão pela qual é bom verificar essa lista é porque referências desnecessárias desperdiçam recursos do sistema. Se você não usa manipulação de arquivos XML, por que manter o Microsoft XML selecionado? se você não se comunicar com um banco de dados, remova o Microsoft DAO. Se você não gravar a saída em um arquivo de texto, remova o Microsoft Scripting Runtime .

Se você não tiver certeza do que essas referências selecionadas fazem, pressione F2 e você verá o Pesquisador de Objetos. No topo desta janela, você pode escolher a biblioteca de referência para navegar.

excel-vba8

Depois de selecionado, você verá todos os objetos e funções disponíveis, sobre os quais você pode clicar para saber mais.

Por exemplo, quando clico na biblioteca do DAO, fica claro que tudo se resume a conectar e se comunicar com bancos de dados.

excel-vba9

Reduzir o número de referências que você usa em seu projeto de programação é apenas bom senso e ajudará a tornar o aplicativo geral mais eficiente.

Programação no Excel VBA

A idéia toda de realmente escrever código no Excel, Economizando tempo com operações de texto no Excel, economizando tempo com operações de texto no Excel O Excel pode fazer mágica com números e pode lidar com caracteres igualmente bem. Este manual demonstra como analisar, converter, substituir e editar texto em planilhas. Essas noções básicas permitirão que você realize transformações complexas. Leia mais assusta muita gente, mas esse medo realmente não é necessário. O Visual Basic for Applications é uma linguagem muito simples de aprender e, se você seguir as práticas comuns básicas mencionadas acima, você garantirá que seu código seja limpo, eficiente e fácil de entender.

Você codifica em VBA? Que tipo de lições você aprendeu ao longo dos anos que você pode compartilhar com outros leitores aprendendo VBA pela primeira vez? Compartilhe suas dicas na seção de comentários abaixo!

Créditos da imagem: Computador por www.BillionPhotos.com via Shutterstock, bandejas coloridas do cubo de gelo por hahauk através de Shutterstock.com

In this article