Assim que você escrever um código que seja executado com sucesso e faça o que você quer, é sempre uma boa ideia salvá-lo e começar a trabalhar em uma versão mais recente para otimizar. Compare a versão “_test” com a minha revisão usando a construção With / End With (a versão sem “_test”).
Série DONUT PROJECT 2018 | VBA
- 01 - Maximizando Sua Eficiência
- 02 - Continua Cético
- 03 - Requisitos e Preparação
- 04 - Opções de Solução
- 05 - Gravando a Primeira Macro
- 06 - Recursos Adicionais
- 07 - Amostra de Macro
- 08 - Referenciando Ranges
- 09 - Método Count
- 10 - Loop For-Each
- 11 - Os Benefícios do Controle de Versão
- 12 - Aumente sua Produtividade
Observe como o código a seguir exemplifica o lema "Tornando o Complexo Simples". Com menos linhas de código, você tem menos objetos e métodos para procurar e ler, o que é menos trabalhoso e, em alguns casos, simplifica a lógica de fluxo de controle . Aqui está o código novamente:
Sub LoopThroughColumn()
'Loop through all of the cells in one column of a small table and add the RowNumber _
to the Sheep value and put the result in the cell to the right
Application.ScreenUpdating = False
'Loop through all of the cells in one column of a small table and add the RowNumber _
to the Sheep value and put the result in the cell to the right
Application.ScreenUpdating = False
Dim Counter As Integer
Dim FinalRow As Integer
Dim Header As Range
Dim NewId As Variant
Dim FinalRow As Integer
Dim Header As Range
Dim NewId As Variant
Excel.Application.Workbooks("ExcelDemo.xlsm").Worksheets("SleepStudy").Activate
Set Header = ActiveSheet.Range("B1")
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
For Counter = 0 To FinalRow - 2
Set NewId = Header.Offset(Counter + 1, 1)
With NewId
.Value = Header.Offset(Counter + 1).Value + Counter + 1 _
& "G" & WorksheetFunction.RandBetween(100, 999)
.Font.ColorIndex = 25
End With
Next Counter
End Sub
For Counter = 0 To FinalRow - 2
Set NewId = Header.Offset(Counter + 1, 1)
With NewId
.Value = Header.Offset(Counter + 1).Value + Counter + 1 _
& "G" & WorksheetFunction.RandBetween(100, 999)
.Font.ColorIndex = 25
End With
Next Counter
End Sub
As quatro principais diferenças são as seguintes:
1. Pegue a referência repetitiva mais longa do código e coloque-a em uma variável. Nesse caso, as células que contêm nossa resposta (uma à direita da coluna “Ovelha”) podem ser armazenadas em uma variável, pois ela é usada com muita frequência.
2. Use a construção With / End With sempre que precisar usar mais de um método em um objeto. Como estou mudando a cor e o valor, a diferença parece pequena aqui. Em Sub maiores e mais complexas, há uma diferença considerável na legibilidade - e o Gravador de Macros os usa, portanto, é mais uma construção com a qual você deve se acostumar a usar
3. Combine as duas etapas no loop que modificam a propriedade de valor. É muito mais fácil de ler e resulta em menos linhas de código. Agora estou realizando o cálculo simples e concatenando a String até o fim dela. O Excel facilita essa ação, permitindo a conversão implícita entre os tipos de dados Integer e String (e outros) quando você usa o tipo de dados “Variant” como eu.
4. Defina o valor "NewId" dentro do loop. Se você definir o valor após o loop, a macro falhará porque você não instanciou nem definiu uma instância de “NewId” para uso antes da primeira vez em que é chamada. Se você definir o valor antes do loop, sua Macro será executada, mas apenas fornecerá um novo valor para a primeira célula na nova coluna, porque o valor do contador é zero e não é alterado até que o loop seja iniciado.
Notas de rodapé
Para o propósito de manter a prosa concisa, a análise de dados e a reconciliação entre o relatório ad hoc csv do cliente e sua planilha serão referidas como "o processo". Em outras palavras, você não precisa fazer login em outra máquina durante o processo para entender as relações entre os pontos de dados. Se o seu sistema ou administrador de rede tiver a largura de banda, sinta-se à vontade para trabalhar com ele enquanto atualiza seu código para considerar atualizações de senha agendadas e alteração dos níveis de permissão para todos os usuários relevantes. Como alternativa, você pode evitar o problema escrevendo macros específicas para cada domínio no processo. Se uma dessas opções não estiver disponível para você, o VBA pode não ser a solução ideal para esse problema.
Arquivos TXT ou CSV podem ser convertidos em arquivos de trabalho do Excel (arquivos XLS)
A fórmula “FinalRow” é algo encontrado no excelente livro de VBA, “VBA e Macros: Microsoft Excel 2013” por Bill Jelen e Tracy Syrstad na página 82. É uma fórmula que permite que você encontre dinamicamente o tamanho de uma tabela ou intervalo. Você vai apreciar isso muito mais depois, mas apenas tenha uma ideia agora. Pense em como funciona, desmembrando-a usando o método “select”. Na verdade, pode-se matar dois coelhos com uma só cajadada, ajudando você a usar o explorador de objetos enquanto quebra essa linha.
Conheça também:
Série Piece of Cake
- PIECE OF CAKE - MS Excel - Zipando - Compacte no formato Zip
- PIECE OF CAKE - MS Excel - Zipando - Escolha os Arquivos a Compactar
- PIECE OF CAKE - MS Excel - Zipando - Escolha uma Pasta e Compacte
- PIECE OF CAKE - MS Excel - Zipando - Compacte Todos os Arquivos da Pasta
- PIECE OF CAKE - MS Excel - Zipando - Compacte a Planilha Atual
- PIECE OF CAKE - MS Excel - Zipando - Compacte e Envie por e-Mail
- PIECE OF CAKE - Connecting to Oracle 12g with Excel VBA
- PIECE OF CAKE - Extract Path From String
- PIECE OF CAKE - Detecta se Arquivo Existe
- PIECE OF CAKE - MS Excel - Finding Last Row
- PIECE OF CAKE - Obtendo Endereço IP
- PIECE OF CAKE - Criando Arquivo Texto Externo
- PIECE OF CAKE - Criando Tabelas no SQL Server a partir do MS Excel
- PIECE OF CAKE - Notação Húngara
- PIECE OF CAKE - Usando Stored Procedures
- PIECE OF CAKE - Microsoft Access - Removendo Prefixo das Tabelas
- PIECE OF CAKE - MS Access e MS Word - Técnica de Automação
- PIECE OF CAKE - MS Access - 5 Formas Manuais de Reparo
- PIECE OF CAKE - Correção de Métricas
- PIECE OF CAKE - Convertendo Texto em Imagem
- PIECE OF CAKE - Excel - Manipule o Google Maps em sua Planilha
- PIECE OF CAKE - VBA Excel - Traduzindo Planilhas - Google Translate API
- PIECE OF CAKE - Defina a Latitude e a Longitude
Séries Donut
- DONUT PROJECT 2018 - VBA - 12 - Aumente sua Produtividade
- DONUT PROJECT 2018 - VBA - 11 - Os Benefícios do Controle de Versão
- DONUT PROJECT 2018 - VBA - 10 - Loop For-Each
- DONUT PROJECT 2018 - VBA - 09 - Método Count
- DONUT PROJECT 2018 - VBA - 08 - Referenciando Ranges
- DONUT PROJECT 2018 - VBA - 07 - Amostra de Macro
- DONUT PROJECT 2018 - VBA - 06 - Recursos Adicionais
- DONUT PROJECT 2018 - VBA - 05 - Gravando a Primeira Macro
- DONUT PROJECT 2018 - VBA - 04 - Opções de Solução
- DONUT PROJECT 2018 - VBA - 03 - Requisitos e Preparação
- DONUT PROJECT 2018 - VBA - 02 - Continua Cético
- DONUT PROJECT 2018 - VBA - 01 - Maximizando Sua Eficiência
- DONUT PROJECT 2018 - Excel - Gravando Macro Altere SELECT por RANGE
- DONUT PROJECT 2018 - O que Desenvolvedores Aprendem com Michael Jordan
- DONUT PROJECT 2018 - Excel - Macros - Mudando o Mindset
- DONUT PROJECT 2018 - Excel - Acelerando Macros
- DONUT PROJECT 2015 - Extraindo e-Mails
- DONUT PROJECT 2015 - Função - Extraindo Elementos da String
- DONUT PROJECT 2015 - Função - Retornando Nº de ocorrências de um Caractere
- DONUT PROJECT 2015 - Função - Retorna Conteúdo Delimitado por 2 Caracteres
- DONUT PROJECT 2015 - Função - Retorna Apenas o Conteúdo Entre Parênteses
- DONUT PROJECT 2015 - Função - Extrai Conteúdo entre Parênteses
- DONUT PROJECT 2015 - Excel - Report Layout
- DONUT PROJECT 2015 - Excel - Grand Totals - Inserindo Totais na Tabela Dinâmica
- DONUT PROJECT 2015 - Excel - Mudando a Fonte de Dados da Tabela Dinâmica
- DONUT PROJECT 2015 - Excel - Aplicando Refresh em Tabelas Dinâmicas
- DONUT PROJECT 2015 - Como Manter Informações parcialmente Anônimas
- DONUT PROJECT 2015 - Excel - Limpando o Filtro da Tabela Dinâmica
- DONUT PROJECT 2015 - Excel - Criando Filtros Múltiplos na Tabela Dinâmica
- DONUT PROJECT 2015 - Excel - Criando Filtro de Relatório na Tabela Dinâmica
- DONUT PROJECT 2015 - Excel - Remover Campos Calculados da Tabela Dinâmica
- DONUT PROJECT 2015 - Excel - Remover Campos da Tabela Dinâmica
- DONUT PROJECT 2015 - Excel - Adicionar Campos Calculados na Tabela Dinâmica
- DONUT PROJECT 2015 - Excel - Apagar todas as Tabelas Dinâmicas
- DONUT PROJECT 2015 - Excel - Apagar Tabela Dinâmica Específica
- DONUT PROJECT 2015 - Adicionar Rodapé de Confidencialidade no Office
- DONUT PROJECT 2015 - Excel - Criando uma Tabela Dinâmica
- DONUT PROJECT - Use os add-ins do MS Excel e dê um salto em sua performance
- DONUT PROJECT - VBA - Automatize o Outlook para enviar um e-mail com anexo
- DONUT PROJECT - VBA - Outlook - Salvando arquivos anexados nos e-mails
- DONUT PROJECT - VBA - Criando uma Matriz de Datas MAT - Moving Annual Total
- DONUT PROJECT - VBA - Excel - Atualize Tabelas Dinâmicas
- DONUT PROJECT - VBA - Excel - Removendo os Caracteres Alfabéticos e Especiais
- DONUT PROJECT 2014 - VBA - Access - Criando uma Query com Parâmetros
- DONUT PROJECT 2014 - VBA - Access - Atualizando o conteúdo de uma Query
- DONUT PROJECT - VBA - Access - Saiba o Número de Registro de cada tabela
- DONUT PROJECT - VBA - Access - Extraia Dados sem Problemas de TIMEOUT
- DONUT PROJECT - VBA - Access - Lista o Tamanho de Todas as Tabelas
- DONUT PROJECT - VBA - Excel - Populando um ListBox no seu Formulário
- DONUT PROJECT - VBA - Excel - Importando arquivos CSV
- DONUT PROJECT - VBA - Excel - Deletando Conexões de Dados
- DONUT PROJECT - VBA - Excel - Obtendo o Nome da Planilha sem a Extensão
- DONUT PROJECT - VBA - WORD - Exportação Automatizada - DOC para PDF
Nenhum comentário:
Postar um comentário