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
Por exemplo, se o número de Ovelhas contadas no registro for 24, concatene 24, a letra maiúscula "G" e um número aleatório de 3 dígitos, como este: 24G132. Em seguida, destaque o novo código em uma cor diferente.
Aqui está uma tabela de amostra (crie-a manualmente em uma pasta de trabalho em branco, preferencialmente nas colunas “A” e “B”):
Tudo bem, aqui está minha resposta:
'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
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
Como há muita coisa acontecendo aqui, eu vou dividir isso para ilustrar vários pontos:
Aqui está o resultado:
Aqui está minha primeira resposta (note que adicionei o sufixo “_test” - um bom hábito de separar uma resposta que você está trabalhando do último trecho de código que você não quer arriscar a quebrar):
Sub LoopThroughColumn_test()
'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
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
Header.Offset(Counter + 1, 1).Value = Header.Offset(Counter + 1).Value + Counter + 1
Header.Offset(Counter + 1, 1).Font.ColorIndex = 25
Header.Offset(Counter + 1, 1).Value = Header.Offset(Counter + 1, 1).Value & _
"G" & WorksheetFunction.RandBetween(100, 999)
Next Counter
End Sub
E a saída é exatamente igual à minha resposta final. Vamos percorrer a versão "_test" (acima) para que entenda o que está acontecendo:
- Primeiro, descreva o que o código realmente faz em uma breve seção de comentários e use um espaço seguido por um sublinhado para continuar o comentário na próxima linha se precisar (linhas 2-3).
- Em seguida, desative o ScreenUpdating por motivos de desempenho. Copie o código exato na linha 4. É uma etapa muito comum e importante à medida que trabalha com pastas de trabalho maiores e códigos mais complexos.
- Declare as variáveis que você acha que precisará agora, mas sinta-se à vontade para alterá-las conforme necessário (linhas 6-8).
- Em seguida, estabeleça o escopo da Macro - diga a qual planilha e pasta de trabalho você quer que ela seja executada (linha 10).
- Crie uma variável para referenciar o único cabeçalho em que estamos interessados (consulte a linha 12). Sim, codifiquei-o para este exemplo para fins de simplicidade.
- Escreva a fórmula “FinalRow” como mostrado na linha 14 antes de qualquer expressão de loop que envolva realizar qualquer ação nas células em uma coluna de uma tabela
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, eu 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