4 Erros que você pode evitar ao programar macros do excel com vba

Microsoft Excel é uma ferramenta de análise de dados muito capaz já, mas com a capacidade de automatizar tarefas repetitivas com macros

escrevendo código simples (VBA), é que muito mais poderoso. No entanto, usado incorretamente, VBA pode causar uma série de problemas.Como enviar e-mails de uma planilha do Excel Usando Scripts VBAComo enviar e-mails de uma planilha do Excel Usando Scripts VBANo passado, eu usei e-mail muito em meus trabalhos em lotes e outros scripts automatizados, assim como eu descrevi em artigos anteriores. Estes são grandes para aqueles momentos em que você tem um script ...consulte Mais informação

Mesmo se você não é um programador, VBA oferece funções simples que permitem que você adicionar alguma funcionalidade realmente impressionante para suas planilhas, por isso apenas ainda não deixe!

Se você é um guru VBA, que cria dashboards em Excel, ou um novato, que só sabe como escrever scripts simples que fazem cálculos celulares básicos, você pode seguir as técnicas de programação fácil, que o ajudarão a melhorar as chances de escrever código limpo e livre de bugs.

Introdução ao VBA

Se você não tiver programado em VBA no Excel antes, permitindo que as ferramentas de desenvolvedor para fazê-lo é realmente muito fácil. Basta ir ao Arquivo gt; opções e depois Personalizar fita. Basta mover o Desenvolvedor grupo de comando da esquerda painel para a direita.

Excel-VBA1

Certifique-se a caixa de seleção está habilitado, e agora a guia Desenvolvedor irá aparecer no seu menu Excel.

Excel-VBA2

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

1. Nomes variáveis ​​Horrible

Agora que você está na janela de código, é hora de começar escrever código VBA. O primeiro passo importante para a maioria dos programas, seja em VBA ou qualquer outra língua, está definindo as suas variáveis.Como você pode fazer sua própria simples App Com VBAComo você pode fazer sua própria simples App Com VBAPara aqueles de vocês que realmente gostaria de ser capaz de escrever sua própria aplicação, mas nunca ter digitado uma única linha de código antes, eu vou levá-lo através de fazer o seu muito ...consulte Mais informação

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

  • Torná-los o mais curto possível.
  • Torná-los o mais descritivo possível.
  • Prefácio-los com o tipo de variável (boolean, integer, etc ...).
  • Lembre-se de usar o escopo direita (veja abaixo).

Aqui está uma imagem de exemplo de um programa que eu uso muitas vezes para fazer WMIC Windows chama de Excel para reunir informações PC.Como Ver todos Informações Seu PC usando um simples Excel VBA ScriptComo Ver todos Informações Seu PC usando um simples Excel VBA ScriptExcel e 10 minutos de trabalho vai lhe dar informações mais detalhadas sobre o seu computador do que você jamais imaginou ser possível. Parece bom demais para ser verdade? Isso é o Windows, se você sabe 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úblico” por prefaciar a declaração com Público. Caso contrário, as variáveis ​​se declarado pelo prefacing-los com a palavra escurecer.

Como você pode ver, se a variável é um inteiro, é prefaciado com int. Se for 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 vai notar que, se há algo como uma corda que mantém um nome de computador, em seguida, a variável é chamada strComputerName.

Evite fazer nomes de variáveis ​​muito complicadas ou confusas que só você entende. Tornar mais fácil para outro programador para vir atrás de você e entender o que isso significa!

Outro erro que as pessoas cometem é deixar nomes de folha como o padrão “Sheet1”, “Sheet2”, etc ... Isso acrescenta mais confusão para um programa. Em vez disso, o nome das folhas para que elas fazem sentido.

Excel-vba4

Desta forma, quando você se referir ao nome da folha em seu código Excel VBA, você está se referindo a um nome que faz sentido. No exemplo acima, eu tenho uma folha onde eu puxar informações de rede, assim que eu chamo a folha “Network”. Agora no código, a qualquer momento eu quero fazer referência a folha de rede, eu posso fazê-lo rapidamente sem olhar para cima o número da folha é.Usando VBA para automatizar o Internet Explorer Sessões de uma planilha do ExcelUsando VBA para automatizar o Internet Explorer Sessões de uma planilha do ExcelSua integração com o Windows permite o controle do Internet Explorer em um número de maneiras surpreendentes usando o Visual Basic for Applications roteiro (VBA) a partir de qualquer aplicativo que suporte isso, como o Word, Outlook ou Excel.consulte Mais informação

2. Quebrar em vez de loop

Um dos mais problemas comuns mais recente programador têm quando começar a escrever código está devidamente lidar com loops. E uma vez que muitas pessoas que usam o Excel VBA são muito novatos código, pobre looping é epidemia.6 hábitos de vida que a programação poderia lhe ensinar hoje6 hábitos de vida que a programação poderia lhe ensinar hojeTudo importante que você precisa saber sobre como viver uma vida bem sucedida, você pode começar a partir de um programa de computador. Não acredita em mim? Leia.consulte Mais informação

Looping é muito comum no Excel, porque muitas vezes você está processando dados valores para baixo uma linha inteira ou uma coluna, então você precisa para fazer um loop para processar todos eles. Novos programadores muitas vezes querem apenas sair de um loop (ou um loop ou um olhar Enquanto) instantaneamente quando uma determinada condição é verdadeira.

Excel-VBA5

Você pode ignorar a complexidade do código acima, basta observar que dentro do interior IF, há uma opção para sair do loop se a condição é verdadeira. Aqui está um exemplo simples:

para x = 1 Para 20If x = 6 Então Exit Fory = x + i intRoomTempNext

Novos programadores tomar essa atitude porque é fácil. Quando uma condição ocorre que você está esperando, a fim de sair de um loop, a tentação de saltar apenas imediato fora dele é forte, mas não fazê-lo.

Mais frequentemente do que não, o código que vem depois que “break” É importante processo, mesmo a última vez através do laço antes de sair. Uma maneira muito mais limpa e mais profissional para lidar com as condições em que pretende deixar um laço no meio, é só incluir essa condição de saída em algo como uma declaração While.

Enquanto (Xgt; =1 E xlt; =20 E xlt;gt;6)para x = 1 Para 20Y = x + intRoomTempNext iWend

Isto permite um fluxo lógico do seu código, com a última corrida através de quando x é 5, e em seguida, graciosamente sair uma vez que o loop conta até 6. Não há necessidade de incluir SAIR estranho ou PAUSA comandos meados de loop.

3. Não usando matrizes

Outro erro interessante que novos programadores de VBA fazer está tentando processar tudo dentro de vários loops aninhados que filtram para baixo através de linhas e colunas durante o processo de cálculo.Os princípios de computador Programação 101 - Variáveis ​​e tipos de dadosOs princípios de computador Programação 101 - Variáveis ​​e tipos de dadosTendo introduzido e falou um pouco sobre Programação Orientada a Objetos antes e onde seu xará vem, eu pensei que é hora de passar os princípios absolutos de programação de uma maneira específica não-linguagem. Este...consulte Mais informação

Enquanto isso pode funcionar, ele também poderia levar a grandes problemas de desempenho, se você constantemente tem que executar os mesmos cálculos sobre os mesmos números na mesma coluna. Loop através dessa coluna e extrair os valores a cada momento não é apenas tedioso para o programa, é um assassino em seu processador. Uma maneira mais eficiente de lidar com longas listas de números é utilizar um array.



Se você nunca usou um array antes, não tenho medo. Imagine um array como uma bandeja de cubos de gelo com um certo número de “cubos” você pode colocar informações em. Os cubos são numerados de 1 a 12, e é assim que você “colocar” os dados em si.

icecube-bandejas

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

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

Aqui está o que uma linha looping código sem um array pode parecer:

sub Test1()Dim x As IntegerintNumRows = Alcance("A2", Alcance("A2").Fim(xlDown)).Rows.CountRange("A2").SelectFor x = 1 Para intNumRowsIf Gama("UMA" & str(X)).valor lt; 100 entãointTemp = (Alcance("UMA" & str(X)).valor) * 32 - 100End IfActiveCell.Offset(1, 0).SelectNextEnd Sub

Neste exemplo, o código está a processar-se através de cada célula no intervalo e executar o cálculo da temperatura.

Mais tarde no programa, se você quiser realizar alguma outra cálculo sobre esses mesmos valores, você teria que duplicar esse código, processo para baixo através de todas essas células e executar o seu novo cálculo.

Agora, se você em vez disso, usar uma matriz, então você pode armazenar os valores 12 na linha em sua matriz de armazenamento conveniente. Então, mais tarde, quando quiser executar cálculos contra esses números, eles já na memória e está pronto para ir.

sub Test1()Dim x As IntegerintNumRows = Alcance("A2", Alcance("A2").Fim(xlDown)).Rows.CountRange("A2").SelectFor x = 1 Para intNumRowsarrMyArray(x-1) = Alcance("UMA" & str(X)).valor)ActiveCell.Offset(1, 0).SelectNextEnd Sub

É apenas necessário o “x-1” para que aponta para o elemento de matriz porque o ciclo para iniciar a 1. Elementos de matriz precisa para começar a 0.

Mas uma vez que você tem sua matriz de todos carregados com os valores da linha, mais tarde no programa você pode apenas chicotear juntos quaisquer cálculos que você quer usando a matriz.

sub TempCalc()para x = 0 Para UBound(arrMyArray)arrMyTemps(y) = arrMyArray(X) * 32 - 100NextEnd Sub

Este exemplo passa por toda a matriz linha (UBound dá-lhe o número de valores de dados na matriz), faz o cálculo da temperatura, e, em seguida, coloca-lo em outro array chamado arrMyTemps.

Você pode ver como muito mais simples o segundo código de cálculo é. E a partir deste ponto em diante, a qualquer momento você deseja realizar mais cálculos no mesmo conjunto de números, sua matriz já está pré-carregado e pronto para ir.

4. Usando muitas referências

Se você está programando em pleno direito Visual Basic, ou VBA, você precisa incluir “referências” para aceder a determinados recursos, como acesso a um banco de dados Access, ou escrever a saída para um arquivo de texto.

As referências são mais ou menos como “bibliotecas” cheios de funcionalidades que você pode tocar em, se você ativar esse arquivo. Você pode encontrar referências em vista desenvolvedor, clicando em Ferramentas no menu e, em seguida, clicar em Referências.

Excel-VBA6

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

Excel-vba7

Na minha experiência, as seleções aqui pode mudar de um Excel instalar para outro, e de um PC para outro. Depende muito de que outras pessoas têm feito com o Excel no PC, se certos add-ons ou recursos foram adicionados ou habilitado, ou se alguns outros programadores poderiam ter usado algumas referências em projetos anteriores.

A razão é bom verificar esta lista é porque os recursos do sistema resíduos referências desnecessárias. Se você não usar qualquer arquivo manipulação XML, então por que manter o Microsoft XML selecionado? se você não se comunicar com um banco de dados, em seguida, remover o Microsoft DAO. Se você não escrever a saída para um arquivo de texto, em seguida, remova Microsoft Scripting Runtime.

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

Excel-vba8

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

Por exemplo, quando eu clicar sobre a biblioteca DAO, ele rapidamente se torna claro que isto é tudo sobre conectar e comunicar com bancos de dados.

Excel-vba9

Reduzir o número de referências que você usar em seu projeto de programação é apenas bom senso, e vai ajudar a fazer a sua corrida geral do aplicativo de forma mais eficiente.

Programação em Excel VBA

Toda a idéia de verdade escrever código no Excel assusta muita gente, mas esse medo não é realmente necessário. Visual Basic for Applications é uma linguagem muito simples de aprender, e se você seguir as práticas comuns básicos mencionados acima, você vai garantir que o seu código é limpo, eficiente e fácil de entender.Economia de tempo com operações de texto em ExcelEconomia de tempo com operações de texto em ExcelExcel pode fazer mágica com números e ele pode lidar com personagens igualmente bem. Este manual demonstra como analisar, converter, substituir e editar o texto dentro de planilhas. Estes princípios permitirá que você executar transformações complexas.consulte Mais informação

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


Artigos relacionados