Você está na página 1de 6

Na janela Central de Confiabilidade selecione a opo Configuraes de Macro e marque o item para habilitar todas as macros conforme a

figura abaixo:

Pronto , feito isso j podemos iniciar o desenvolvimento da aplicaoVBA no Excel 2007.


Abra ento oExcel 2007, ser aberta uma planilha em branco. Clique ento no boto no canto superior a esquerda para abrir o menu
principal de opes;
Selecione a opoSalvarcomo e clique no item :Pasta de Trabalho Habilitada para Macro do Excel;

Em seguida informe o nome do arquivo :ProcurandoExcel;

Nossa primeira tarefa ser criar a planilha onde iremos armazenar as informaes dos clientes. Sim, isso mesmo, vamos armazenar as
informaes no prprio Excel.
ParafacilitaronossotrabalhovamospreencheraplanilhaPlan1comdadosoriundosdeumbancodedadosAccess,nocasoobancodedadosNorthwind.mdb
NaplanilhacliquenomenuDadoseaseguiremDoAccess(Poderamosimportardadosdaweb,deumarquivotexto,etc.)

AseguirnajanelaSelecionarFontedeDadosselecioneobancodedadosNorthwind.mdb

AseguirselecioneatabelaCategoriesnajanelaSelecionarTabela
ParaconcluircliquenobotoOKdajanelaImportarDados

Os dados sero importados diretamente para a planilhaPlan1conforme mostra a figura abaixo. A coluna Data e a linha 10 e 11 foram digitadas
por mim para adequar os dados ao nosso exemplo:

At o momento criamos a nossa planilha com os dados agora vamos partir para a automao do cadastro das informaes usando VBA.
Para comear vamos incluir trs botes de comando na planilha da seguinte forma:
1.No menu clique na guia Desenvolvedor;
2.A seguir clique na opo Inserir para abrir a caixa de controles disponveis;
3.Clique ento no controle Boto (Button) e a seguir clique na rea vazia a direita da planilha conforme mostra a figura para incluir o
primeiro Boto;
4.Repita a operao para incluir o segundo boto;

Quando voc incluir um boto na planilha ser aberta a janela para atribuir macro conforme mostra a figura a seguir:

Voc deve ento fazer o seguinte:


Para o primeiro boto informe o nomeBotao1_Cliquee clique no botoNovo:
Ser aberta a janela onde voc deve informar o cdigo para abrir o formulrio que iremos usar no projeto;
Digite o cdigo conforme mostra a figura a seguir no eventoClickdo boto noMdulo1:

EstecdigofazalocalizaodaprimeiraocorrnciadeumastringnointervalodascolunasBeCusandoomtodoFind:
OmtodoFindlocalizaumainformaoemumintervalo
expression.Find(What,After,LookIn,LookAt,SearchOrder,SearchDirection,MatchCase,MatchByte,SearchFormat)
Nome
What

Tipode
Dados
Variant

Descrio
Osdadosaprocurar.PodeserumacadeiaouqualquertipodedadosdoMicrosoftExcel.

After

Variant

Aclulaapsoqualvocdesejaqueapesquisaparacomear.Istocorrespondeposiodaclula
ativaquandoumabuscafeitaapartirdainterfacedoutilizador.Depoisdenotarquedeveseruma
nicaclulanointervalo.Lembresequeapesquisacomeadepoisdessaclula,aclulaespecificada
nopesquisadaatqueomtodoenvolveavoltaaestaclula.Sevocnoespecificareste
argumento,apesquisacomearapsaclulanocantosuperioresquerdodointervalo

Lookin

Variant

Otipodeinformao

LookAt

Variant

PodeserumadasseguintesconstantesXlLookAt:xlWholeouxlPart.

SearchOrder

Variant

PodeserumadasseguintesconstantesXlSearchOrder:xlByRowsouxlByColumns.

SearchDirection Variant

Adireodapesquisa

MatchCase

Variant

PodeserTrueparafazerabuscausandoapesquisasensvel.OvalorpadroFalse.

MatchByte

Variant

Usadoapenassevoctiverselecionadoouinstaladoosuportedoubebytedalinguagem>

SearchFormat

Variant

Oformatodapesquisa

Retorno:UmobjetoRangequerepresentaaprimeiraclulaondeessainformaoencontrada.
EstemtodoretornaNothingsenenhumacorrespondnciaforencontradaenoafetaaseleoouaclulaativa.
AsconfiguraesparaLookin,LookAt,SearchOrder,eMatchBytesosalvascadavezquevocutilizarestemtodo.
Sevocnoespecificarvaloresparaessesargumentosnaprximavezquevocchamaromtodo,osvaloressalvosso
usados.
AdefiniodestesargumentosalteraasconfiguraesnacaixadedilogoLocalizarealteraasconfiguraesnacaixa
dedilogoLocalizaralterandoosvaloressalvosquesousadossevocomitirosargumentos.Paraevitarproblemas,
definaessesargumentosexplicitamentecadavezquevocusaestemtodo.

VocpodeusarosmtodosFindNexteFindPreviouspararepetirapesquisa.

Para o outro boto iremos incluir o cdigo abaixo para localizar altima ocorrnciade uma string nas colunas B e C no
eventoBoto2_Cliqueque tambm usa o mtodoFind:
Sub Boto4_Clique()
Dim EncontraString As String
Dim Intervalo As Range
EncontraString = InputBox("Informe o valor a procurar")
If Trim(EncontraString) <> "" Then
With Sheets("Plan1").Range("B:C")
Set Intervalo = .Find(What:=EncontraString, _
After:=.Cells(1), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False)
If Not Intervalo Is Nothing Then
Application.Goto Intervalo, True
Else
MsgBox "No Localizado"
End If
End With
End If
End Sub

FinalmentenoltimobotovamosincluirocdigoVBAnoeventoBoto3_Cliqueconformeabaixo:
Sub Boto5_Clique()
Dim PrimeiraOcorrencia As String
Dim mVetor As Variant
Dim Intervalo As Range
Dim Contador As Long
Dim I As Long
Dim NovaPlanilha As Worksheet
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
'Define o critrio de buca em um array
mVetor = Array("#")
'Voc pode usar mais de um valor no array
'mVetor = Array("@", "#")
'Inclua uma nova planilha no seu workbook para copia
'Voc pode usar tambm uma planilha existente como fizemos abaixo
Set NovaPlanilha = Sheets("Plan2")
'no vou criar uma nova planilha mas se desejar comente a linha acima
'descomente a linha de baixo
'Set NovaPlanilha = Worksheets.Add
With Sheets("Plan1").Range("A1:Z100")
Contador = 0
For I = LBound(mVetor) To UBound(mVetor)
'Se voce usar LookIn:=xlValues vai funcionar
'com a clula da forma que usa o simbolo "@"
'Nota : Eu usei xlPart neste exemplo e no xlWhole
Set Intervalo = .Find(What:=mVetor(I), _
After:=.Cells(.Cells.Count), _
LookIn:=xlFormulas, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not Intervalo Is Nothing Then
PrimeiraOcorrencia = Intervalo.Address
Do
Contador = Contador + 1
Intervalo.Copy NovaPlanilha.Range("A" & Contador)
' Use este codigo se voc quiser somente copiar o valor
' NovaPlanilha.Range("A" & Contador).Value = Intervalo.Value

Set Intervalo = .FindNext(Intervalo)


Loop While Not Intervalo Is Nothing And Intervalo.Address <> PrimeiraOcorrencia
End If
Next I
End With
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub

Nestecdigodefinimosquedesejamoscopiarocontedodasclulasquecontenhamocaractere#paraaplanilhaPlan2.
Agora vamos alterar os textos de exibio dos botes:
1.Para alterar o texto do boto clique com o boto direito do mouse sobre o boto e a seguir selecione : Alterar Texto;
2.Informe os textos conforme indica a figura para os dois botes;
Feitoissobastaexecutaoprojetoeclicaremcadaumdosbotespararealizarabusca.

OuparacopiarotextocomocritrioparaaplanilhaPlan2:

Você também pode gostar