Detalhes em VBA que poucas pessoas sabem Parte 2
Por: Gutemberg S.
18 de Agosto de 2021

Detalhes em VBA que poucas pessoas sabem Parte 2

Cláusula With

Outras linguagens de programação VBA

Você sabia que é possível executar várias linhas encadeadas que nos possibilitam a redução de código ou  reaproveitamento de parte das linhas de nossa programação VBA? Se não, Leia este artigo para saber mais. Me chamo Gutemberg, tenho experiência com VBA Excel a mais de 10 anos, e te convido nessa incrível jornada desta fantástica tecnologia!!

Pois bem! Abra um módulo padrão em seu VBE, Visual Basic Editor de dentro do seu Excel:

1º Passo – Com o seu excel aberto dê um Alt + F11, para abrir o VBE;
2º Passo – Em seguida insira um módulo através do menu/opção Inserir/Módulo;
3º Passo – Digite, ou copie, o seguinte exemplo básico abaixo dentro do módulo, este exemplo é apenas didático e servirá para comprovar o que estou falando, que serve para aplicar 3 ações referenciando apenas uma única vez a ‘Range’ de uma Sheet desejada:

Sub clausulaWith()   

    With Sheets("Plan").Range("A1:B1")

        .Value = 1

        .Font.Bold = True

        .EntireColumn.AutoFit

    End With   

End Sub

4º Passo – Dê ‘F5’ para executar, ou clique no botão de executar que possui um desenho de uma seta verde apontando para a direita na parte superior do Editor.

Note que ao executar ele executará 3 ações que são: Atribuir o valor ‘1’ nas células ‘A1’ e ‘B1’ ao mesmo tempo; Em seguida aplicará ‘Negrito’ nas duas células e por fim, ele ajustará as 2 colunas, ou seja, ajusta a largura das colunas.

Particularmente, me utilizo muito deste recurso, pois, ele possibilita evitarmos repetições desnecessárias no código como abaixo tornando até mesmo menos “poluído” ou  mais “Clean”, por assim dizer.

Sub clausulaWith()   

    Sheets("Plan").Range("A1:B1").Value = 1

    Sheets("Plan").Range("A1:B1").Font.Bold = True

    Sheets("Plan").Range("A1:B1").EntireColumn.AutoFit   

End Sub

Uma observação que vale aqui a ser mencionada é, que podemos até mesmo encadearmos mais de uma cláusula “With” dentro de outra. Ex: Suponhamos que queiramos aplicar as ações mencionadas anteriormente em uma outra pasta de trabalho. Faríamos assim:

Sub clausulaWith()       

    With Workbooks("Plan.xlsx")

         With .Sheets("Plan")   ' Encadeamento através da inclusão do ponto '.' antes de referenciarmoas a sheet

              .Range("A1:B1").Value = 1

              .Range("A1:B1").Font.Bold = True

              .Range("A1:B1").EntireColumn.AutoFit

         End With

    End With   

End Sub

Note que, primeiramente referenciamos o workbook denominado de ‘Plan.xlsx’. Na segunda cláusula, note que iniciamos com um ponto para fazer referência a cláusula anterior, do Workbook e informar que a planilha do arquivo tem o nome de ‘Plan’. Por fim, aplicamos as ações mencionadas no início deste artigo. Simples assim!!

Espero que gostem e, se puderem, deixar aquele comentário “maroto” ficarei grato.

Até a Próxima!!

R$ 40 / h
Gutemberg S.
Duque de Caxias / RJ
Gutemberg S.
3,9 (11 avaliações)
Horas de aulas particulares ministradas 3 horas de aula
Tarefas resolvidas 15 tarefas resolvidas
Identidade verificada
  • CPF verificado
  • E-mail verificado
1ª hora grátis
Professor apaixonado pela informática e pela programação com mais de 5 anos de experiência. Venha aprender com quem ama o que faz!!
Cadastre-se ou faça o login para comentar nessa publicação.

Confira artigos similares

Confira mais artigos sobre educação

+ ver todos os artigos

Encontre um professor particular

Busque, encontre e converse gratuitamente com professores particulares de todo o Brasil