FAPA

Victor M. Sant'Anna

Microsoft Visual Basic – VBA (Visual Basic for Applications)

 

O Visual Basic Editor (VBE) é um programa que vem com o OFFICE e é um editor de programas VBA que podemos editar as macros gravadas com nossos arquivos, mas também é possível inserir ou criar funções para EXCEL, caso as funções disponíveis não resolvam nossos problemas...

 

O Visual Basic for Applications (VBA) é uma implementação do Visual Basic da Microsoft incorporada em todos os programas do Microsoft Office, bem como em outras aplicações da Microsoft. Um problema do uso do VBA é a sua fraqueza perante a ameaça de vírus. Os chamados "vírus de macro" fazem uso do VBA.

 


Inserindo uma função definida pelo usuário (UDF - “User defined functions”)

 

a) No EXCEL, clique no atalho ALT + F11 (deixe a tecla ALT pressionada e pressine a seguir a tecla F11) ou entre no Menu Ferramentas na opção Macro e escolha a opção Editor do Visual Basic

 

b) A janela que abre é o Editor do Microsoft Visual Basic do EXCEL (disponível no MS-Office para o Word, Excel, Out Look, etc.). Nesta janela, no menu Inserir, selecione a opção Módulo

 

c) Na janela que abre, copie e cole o código abaixo:

 

    

Function ContaQuantosDiferentes(ByVal range1 As Range) As Integer

 

    Dim conta As Integer

    conta = 0

    Dim Aux()

   

    ReDim Aux(range1.Rows.Count)

   

    For i = 1 To range1.Rows.Count

        Aux(i) = range1.Cells(i, 1)

    Next i

   

    For i = 1 To range1.Rows.Count - 1

        For j = i + 1 To range1.Rows.Count

            If Aux(i) = Aux(j) Then

                Aux(j) = ""

            End If

        Next j

    Next i

   

    For i = 1 To range1.Rows.Count

        If Aux(i) <> "" Then

            conta = conta + 1

        End If

    Next i

   

    ContaQuantosDiferentes = conta

   

End Function

 

' *****************

 

 

d) No EXCEL, quando quiser usar a função definida pelo usuário, escreva a função

 

= ContaQuantosDiferentes (intervalo)

 

Mas substitua a palavra intervalo pelo intervalo em que deseja contar quantas palavras ou números diferentes existem. Veja exercício a seguir:


 

EXERCÍCIO

Para a tabela abaixo colada a partir da célula A1:

 

cidade

gasto

poa

1

viamao

3

poa

2

canoas

4

viamao

3

canoas

4

poa

3

viamao

3

poa

4

novo hamburgo

7

 

 

a) diga para quantas cidades diferentes foram feitas ligações

Resposta: se a tabela foi colada a partir da célula A1, basta usar  a função definida anteriormente

=ContaQuantosDiferentes(A2:A11)

 

b) Usando a mesma função acima, mostre quantos valores diferentes foram usadas na tabela na coluna gastos

 


 

Uma macro interessante: removendo duplicados da coluna A

Se, ao invés de obtermos o número de registros diferentes precisássemos retirar todos os duplicados da coluna A de uma planilha EXCEL? O problema poderia ser resolvido usando uma macro! Cole a lista seguinte em uma planilha:

 

 

cidade

poa

viamao

poa

canoas

viamao

canoas

poa

viamao

poa

novo hamburgo

 

 

a) No EXCEL, clique no atalho ALT + F11 (deixe a tecla ALT pressionada e pressine a seguir a tecla F11) ou entre no Menu Ferramentas na opção Macro e escolha a opção Editor do Visual Basic

 

b) Na janela do Editor do  Visual Basic do EXCEL, no menu Inserir, selecione a opção Módulo

 

c) Na janela que abre, copie e cole o código abaixo:

 

 

Sub RemoveDupes()
 
        'Add extra Column, "A" becomes "B"
        Columns(1).EntireColumn.Insert 
        'Filter out duplicates and copy unique list to "A"
        Range("B1", Range("B65536").End(xlUp)).AdvancedFilter _
        Action:=xlFilterCopy, CopyToRange:=Range("A1"), Unique:=True
        'Add extra Column, "B" becomes "A"
        Columns(2).EntireColumn.Delete
 
End Sub

 

'(O código acima foi retirado da Internet no enrdereço http://maxexceldev.wordpress.com/ )

 

d) Execute a macro (tecle Alt+F8 e selecione a macro RemoveDupes) e todas as linhas com nomes de cidades repetidas serão retiradas (deletadas). Atenção! Esta macro apaga as células duplicadas, se nas outras colunas existem informações importantes correspondentes às células apagadas, elas serão perdidas!

 


 

Resolvendo o problema anterior por FILTRO:

Removendo duplicados de uma lista por filtro avançado

 

É possível fazer uma cópia de uma lista retirando apenas os valores não repetidos e copiando-os para outra coluna ou planilha.

 

Como?

Cole a lista seguinte em uma planilha EXCEL:

 

cidade

Poa

Viamao

Poa

canoas

Viamao

canoas

Poa

Viamao

Poa

novo hamburgo

 

 

a) Selecione a lista que contém valores repetidos (se a lista foi colocada a partir da célula A1, selecione com o mouse a lista de A2 até A11.

b) Selecione no menu Dados a opção Filtrar e nela a opção Filtro Avançado...

c) Na janela que abre:


 

 Copyright Victor M. Sant'Anna 2008