Dominando o VBA no Excel 365 – Como criar macros facilmente

Exemplo de macro simples: cálculo de salário e formatação de células.

Sub Calculate_Salary()
    Dim wage As Single
    Dim hours As Single
    Dim salary As Single

    wage = Range(“A1”).Value
    hours = Range(“A2”).Value

    salary = wage * hours

    MsgBox “Your salary is “ & salary, vbInformation, “Salary Calculation”

    Range(“A3”).Value = salary

    With Range(“A1:A3”)
        .Font.Bold = True
        .Interior.Color = RGB(144, 238, 144) ' Latar belakang hijau muda
    End With
End Sub

Explicação do código:

  • Dim wage As Single: Esta é uma declaração de variável wage (salário) com tipo de dados Single.
  • Dim hours As Single: Esta é uma declaração de variável hours (horário de trabalho) com um tipo de dados Single.
  • salary =  wage * hours: Aqui, o salário total é calculado multiplicando os salários e as horas trabalhadas.
  • MsgBox: Os resultados do cálculo do salário serão exibidos através da caixa de mensagem (Message Box).
  • Range(“A3”).Value = salary: Os resultados do cálculo do salário são armazenados na célula A3.
  • With Range(“A1:A3”): As células A1 a A3 serão formatadas com texto em negrito e um fundo verde claro (RGB(1444, 238, 144)).

Resultados esperados:

  • Você inserirá o valor dos salários em A1 e horas trabalhadas em A2.
  • Quando o macro for executado, o salário será calculado automaticamente e exibido na célula A3.
  • Os resultados salariais também aparecerão no Message Box.
  • As células A1 a A3 serão formatadas com texto em negrito e uma cor de fundo verde claro.

Usando For…Next Loop em macros

Aproveitando a estrutura For…Next Loop, você pode automatizar o preenchimento de células em planilhas do Excel com dados específicos. For…Next Loop permite iterar por linhas ou colunas dentro de um intervalo especificado, tornando-o muito eficaz para repetir tarefas no preenchimento de dados.

Exemplo: preencher um intervalo de células com resultados de soma de linhas e colunas

Aqui está um exemplo de um macro que utiliza For…Next Loop para preencher o intervalo de células A1:E10 com o valor gerado pela soma entre o número da linha e o número da coluna.

Sub Fill_Cells_With_Loop()
    Dim i As Integer, j As Integer
    For i = 1 To 10
        For j = 1 To 5
            Cells(i, j).Value = i + j
        Next j
    Next i

    With Range(“A1:E10”)
        .Font.Bold = True
        .Interior.Color = RGB(224, 255, 255)
    End With
End Sub

Explicação do código:

  • For i =  1 To 10: o primeiro loop para iteração por meio de linhas, de 1 a 10 (linhas 1 a 10).
  • For j = 1 To 5: O segundo loop para iterações por meio de colunas, de 1 a 5 (colunas A a E).
  • Cells(i, j).Value =  i + j: Preencha a célula com o resultado da soma entre o número da linha (i) e o número da coluna (j).
  • With Range(“A1:E10”): Formate as células A1 a E10 com texto em negrito e fundo azul claro.

Usando a função Chr() para criar caracteres

A função Chr() no VBA funciona para gerar caracteres que correspondem a ASCI codes. ASCII códigos são números que representam caracteres em sistemas de computador. Por exemplo, o código 65 indica a letra A, enquanto o código 66 indica a letra B e assim por diante.

Você pode aproveitar a função Chr() para criar macros que preenchem células com caracteres gerados a partir de códigos ASCII, aleatoriamente ou especificamente.

Exemplo: preenchendo um intervalo de células com caracteres aleatórios usando a função Chr()

Sub Fill_Cells_With_Random_Characters()
    Dim i As Integer, j As Integer
    Dim asciiCode As Integer

    For i = 1 To 5
        For j = 1 To 5
            asciiCode = Int(26 * Rnd) + 65
            Cells(i, j).Value = Chr(asciiCode)
        Next j
    Next i

    With Range(“A1:E5”)
        .Font.Bold = True
        .Interior.Color = RGB(255, 228, 196)
    End With
End Sub

Explicação do código:

  • Dim asciiCode As Integer: Declara uma variável para armazenar o código ASCII.
  • Int(26 *  Rnd) + 65: Gera um número aleatório entre 65 e 90. O código 65 é A em ASCII e o código 90 é Z.
  • Rnd gera um número aleatório entre 0 e 1.
  • 26 * Rnd gera um número entre 0 e 25 e, em seguida, adiciona 65 para obter o código ASCII entre 65(A) e 90(Z).
  • Cells(i, j).Value = Chr(asciiCode): Preenche uma célula com caracteres gerados por Chr() com base no código ASCII.
  • With Range(“A1:E5”): Formata um intervalo de células A1:E5 com texto em negrito e um plano de fundo cor de pêssego (RGB(255, 228, 196)).

Últimos artigos