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.
Série de Livros nut Project
Série DONUT PROJECT 2021
Série DONUT PROJECT 2018
Série DONUT PROJECT 2015
Série DONUT PROJECT 2014
Clique aqui e nos contate via What's App para avaliarmos seus projetos
Envie seus comentários e sugestões e compartilhe este artigo!
brazilsalesforceeffectiveness@gmail.com
Nenhum comentário:
Postar um comentário