DONUT PROJECT 2018 - VBA - 08 - Intervalos de Referência


Aqui está como seria qualificar totalmente uma referência à célula “A1” em uma planilha:

Application.Workbooks ("Book 1"). Worksheets ("Sheet 1"). Range ("A1"). Cell (1,1)

Mas isso é para fins educacionais; Se você quiser uma maneira mais rápida de fazer referência à célula "A1", esse é o caminho a seguir:

ActiveSheet.Range ("A1")

Ou tente isto:

Cell (1,1)

Apenas lembre-se de que esse estilo de referência funciona somente enquanto o Intervalo que foi ativado antes dessa instrução contiver uma célula com o endereço. Eu tive que solucionar erros em minhas próprias Macros como resultado da qualificação inadequada de objetos do Excel antes, e, deixe-me dizer, isso não é divertido.

Em caso de dúvida, é muito melhor começar por ser muito específico, porque você sempre pode remover objetos e testá-lo mais tarde. Para mais informações, consulte este excelente artigo bem escrito no site da Microsoft, “Entendendo Objetos, Propriedades e Métodos”.

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.

Envie comentários e sugestões e compartilhe este artigo! 
⬛◼◾▪ Social Media ▪◾◼⬛
• FACEBOOK • TWITTER • INSTAGRAM • TUMBLR • GOOGLE+ • LINKEDIN • PINTEREST

⬛◼◾▪ Blogs ▪◾◼⬛ 

⬛◼◾▪ CONTATO ▪

Eu acho que o explorador de objetos é bastante útil, então eu darei uma explicação. Aqui está uma lista de todos os termos e propriedades no Object Explorer que precisamos examinar:


Neste ponto, devo explicar rapidamente os níveis mais altos da hierarquia de objetos no VBA para relacionar esses objetos que você está usando de volta aos conceitos teóricos relevantes.

O objeto Aplicativo está no mais alto acesso da biblioteca de classes do Excel (e na maioria, se não em todas, outras bibliotecas de aplicativos do Microsoft Office). "Pastas de trabalho" é uma coleção de objetos e atua como uma propriedade somente leitura do objeto Aplicativo.

Dentro da coleção “Workbooks” existe a coleção “Worksheets”, que possui uma propriedade “Range”, que possui uma propriedade “Cells”. Uma propriedade pode ser um método ou um objeto. Geralmente, um método é uma ação executada em uma propriedade ou objeto. Pense em propriedades e objetos como substantivos e métodos como verbos. A maior parte do que você precisa saber por enquanto envolverá esses objetos.
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.


Envie comentários e sugestões e compartilhe este artigo! 
⬛◼◾▪ Social Media ▪◾◼⬛
• FACEBOOK • TWITTER • INSTAGRAM • TUMBLR • GOOGLE+ • LINKEDIN • PINTEREST

⬛◼◾▪ Blogs ▪◾◼⬛ 


⬛◼◾▪ CONTATO ▪

DONUT PROJECT 2018 - VBA - 07 - Amostra de Macro


Aqui está um exemplo simples, usando o Excel 2013, que deve ajudá-lo a começar, permitindo que você aplique esses conceitos. Vou dar-lhe primeiro o problema e a resposta no final.

Aqui está o problema: Você tem 10 sujeitos em um estudo do sono com um ID correspondente e um número entre um e 50, indicando o número de “Ovelhas” que um sujeito contou. Você deseja criar uma nova chave que vincule a ID a essa contagem específica de “Ovelhas” para fins de arquivamento. Combine o número Record (que é o SubjectId nesse caso, para simplificar), o número Ovelha, a letra maiúscula “G” e um número aleatório de três dígitos à direita da coluna Ovelha.

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”):


Ok, tem a resposta?
Tudo bem, aqui está minha resposta:


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

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:

NOTA: A Sub LoopThroughColumn acima não é a minha primeira resposta em funcionamento.

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:
  1. 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).
  2. 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.
  3. Declare as variáveis ​​que você acha que precisará agora, mas sinta-se à vontade para alterá-las conforme necessário (linhas 6-8).
  4. Em seguida, estabeleça o escopo da Macro - diga a qual planilha e pasta de trabalho você quer que ela seja executada (linha 10).
  5. 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.
  6. 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.


Envie comentários e sugestões e compartilhe este artigo! 
⬛◼◾▪ Social Media ▪◾◼⬛
• FACEBOOK • TWITTER • INSTAGRAM • TUMBLR • GOOGLE+ • LINKEDIN • PINTEREST

⬛◼◾▪ Blogs ▪◾◼⬛ 


⬛◼◾▪ CONTATO ▪

DONUT PROJECT 2018 - VBA - 06 - Recursos Adicionais


Aqui estão os melhores recursos adicionais para complementar seu aprendizado conforme se familiariza com o código VBA:

1. Acesse o site do MSDN em https://msdn.microsoft.com/en-us/library/office/ e navegue até as seções do VBA, ou pesquise apenas as palavras-chave de seu interesse.

2. O livro de John Walkenbach, “Programação de energia do Excel 2013 com o VBA”. Foi um recurso auxiliar fundamental e mantém seu valor.

3. Na janela do VBE (VB Editor), pressione F2 e procure seu objeto ou método aqui (consulte a captura de tela do Navegador de objetos abaixo).

4. Visite http://inanyplace.blogspot.com.br/ - há muitas postagens úteis que resolvem problemas comuns e práticos de VBA.


Antes de escrevermos uma Macro, você deve saber como é o Browser de Objetos, então aqui está (no Excel):


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.

Envie comentários e sugestões e compartilhe este artigo! 
⬛◼◾▪ Social Media ▪◾◼⬛
• FACEBOOK • TWITTER • INSTAGRAM • TUMBLR • GOOGLE+ • LINKEDIN • PINTEREST

⬛◼◾▪ Blogs ▪◾◼⬛ 

⬛◼◾▪ CONTATO ▪

DONUT PROJECT 2018 - VBA - 05 - Gravando a Primeira Macro


1. Ative sua guia Desenvolvedor navegando até Opções - Personalizar Faixa de Opções. Neste exemplo específico, usamos o MS Word, conforme indicado no canto superior esquerdo. (Todos os aplicativos do MS Office têm o mesmo estilo de janela.) Em seguida, marque a caixa de seleção Desenvolvedor no canto inferior direito da nova janela:


2. Pressione "Alt + F11" para abrir a janela do VBE (VB Editor).

3. Arraste esta janela para o segundo monitor. Se você não tiver um segundo monitor, divida sua tela ao meio para poder ver a Planilha aberta de um lado e o VBE do outro, assim:


4. Clique no botão "Gravar Macro", dê um nome a ele se desejar, e encontre o nome da pasta de trabalho no navegador Explorer de objetos no VBE e verifique se "Módulo1" está selecionado e aberto.

5. Copie e cole, digite valores nas células e insira fórmulas e comentários na Planilha aberta. À medida que executar essas tarefas, assistirá ao código aparecendo no VBE em tempo real! Esta é uma das maneiras mais fáceis de se apresentar a alguns dos conceitos básicos da Programação Orientada a Objetos (Object-Oriented Programming - OOP).

Sinta-se à vontade para brincar com o gravador de Macros por um tempo e realize todas as tarefas típicas do Excel manualmente para que possa entender como ele grava e interpreta suas ações no VBA.

Por favor, tenha em mente que existem algumas falhas na forma como o gravador grava o VBA, e você descobrirá essas falhas ao procurar código que os programadores de VBA mais experientes escrevem. Mais especificamente, há alguns pontos importantes que acho que deve considerar ao aprender com o código escrito pelo gravador de Macro.

1. Evite usar o método SELECT e a propriedade “selection”. Quando grava ações, é difícil evitar aprender sobre objetos sem selecioná-las. No VBA, o uso do método SELECT contribui para um desempenho ruim aumentando o número de objetos que está referenciando. Seu código também se torna mais difícil de ler, atravancando-o com objetos desnecessários.

2. Ele geralmente recorre a respostas codificadas, então você pode não entender como deslocar o valor em uma célula para a direita por dois, mas ele dirá a você como mover o valor de “A3” para “C3”. É usar o botão "Referências Relativas" (localizado abaixo do botão "Gravar Macro" na guia Desenvolvedor no canto superior esquerdo). Infelizmente, as referências relativas são geralmente expressas em uma notação diferente do método mais comum Range.Cells (#, #) que vou demonstrar. A “notação diferente” é chamada referências de estilo “R1-C1”, que são abordadas com mais detalhes nos recursos abaixo. Recomendo aprender como elas funcionam, mas não até entender os outros conceitos básicos desta série de artigos.

Apesar dessas limitações, ainda é um ponto de partida incrivelmente útil devido à maneira como introduz objetos e métodos relevantes. O Gravador de Macros é suficiente para começar com o básico.


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.

Envie comentários e sugestões e compartilhe este artigo! 
⬛◼◾▪ Social Media ▪◾◼⬛
• FACEBOOK • TWITTER • INSTAGRAM • TUMBLR • GOOGLE+ • LINKEDIN • PINTEREST

⬛◼◾▪ Blogs ▪◾◼⬛ 

⬛◼◾▪ CONTATO ▪

DONUT PROJECT 2018 - VBA - 04 - Opções de Solução


Depois de definir claramente qual é o problema e entender seu contexto, você precisa decidir que tipo de solução VBA deseja criar. A linguagem VBA pode ser armazenada e compilada com um dos dois tipos de código: uma função ou um procedimento secundário.

Uma função é essencialmente um bloco de código que, idealmente, resolve um problema muito específico aceitando parâmetros e retornando um resultado. Pense nisso como uma maneira de criar sua própria “SUM” ou “PROCV”. Todas as funções do sistema prontas que vêm com o Excel, por exemplo, ilustram o que as funções ideais devem fazer e como elas são usadas.

Ao decidir se deve ou não criar sua própria função (function), pense em restringir os tipos de parâmetros que deseja aceitar e compará-los às funções existentes. Para a maior parte desta série de artigos, no entanto, é na Sub é que estamos interessados.

Subs são basicamente blocos de código que consistem em uma ou mais linhas de código. Você pode escrever um procedimento Sub que consiste em uma única linha de código - na verdade, encorajo você a fazer isso para testar o código.

Em geral, você verá que a principal diferença entre as Functions e os procedimentos Sub é flexibilidade das Sub complexas, enquanto as Functions devem servir a um propósito muito específico.

Uma Macro é uma maneira de armazenar e executar uma Sub e, mais amplamente falando, uma Macro é uma maneira de mapear parâmetros de entrada para parâmetros de saída, geralmente com o propósito de automatizar o trabalho.

Uma Sub é o formato que usaremos no VBA para gravar uma Macro que o aplicativo do Excel entenda. Você pode gravar Macros, como faremos em um minuto, e assistir o Gravador de Macro escrever código VBA diante de seus olhos.

Agora que você tem algumas informações contextuais essenciais, vamos começar!

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.

Envie comentários e sugestões e compartilhe este artigo! 
⬛◼◾▪ Social Media ▪◾◼⬛
• FACEBOOK • TWITTER • INSTAGRAM • TUMBLR • GOOGLE+ • LINKEDIN • PINTEREST

⬛◼◾▪ Blogs ▪◾◼⬛ 

⬛◼◾▪ CONTATO ▪
Related Posts Plugin for WordPress, Blogger...

Vitrine

diHITT - Notícias