Anda di halaman 1dari 68

Disciplina: Programao em microinformtica

VBA com Word / Excel / Access


Office 2!
"Verso 2#$%
Profs#
&aria 'la(dia )a*iani
+amilton &artins Viana
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:2
Pgina Assunto
03 Word Criao de macros
07 O ambiente VBA
08 Exerccio sobre macros
13 Uso de formulrios com Word
17 Segunda parte - Excel Aula 1
19 Criao de macros no Excel sem uso do gravador de macros
20 Uso de formulrios em Excel
24 Uso de tratadores de evento em VBA com Excel
26 Aula 2 de programao com Excel
26 Criao de funo SaldoEstoque
31 Aula 3 de programao com Excel
32 Exerccios VBA Excel
33 Terceira parte - Access Aula 1
35 Uso de formulrios com Access
38 Exerccios para aula 1 com Acess
41 Aula 2 de Access
42 Exerccios Access Aula 2
47 Aula 3 de Access
52 Aula 4 de Access
52 Uso de relatrios com Access
59 Aula 5 de Access
63 Projeto final da disciplina.
65 Complemento - Alguns programas do projeto Access.
68 Bibliografia
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:3
Disciplina Programao em Microinformtica (Prg Micro)
Segundo a Microsoft, de 2002 a 2008 foram vendidas mais de 60 milhes de licenas do
"Office.
O pacote "Office composto de quatro aplicativos (Power Point, Word, Excel e Access).
Apesar de serem os programas mais utilizados em todo o mundo, poucos conhecem e
usam seus recursos mais avanados que podem ser utilizados atravs da programao
com VBA (Visual Basic for Applications).
No Word, a programao feita atravs de Macros, da seguinte maneira:
Criao de uma macro
Para criar uma nova macro dever estar disponvel a guia "Desenvolvedor, que fica
visvel clicando-se no boto "Office e em seguida no boto "Opes do Word. Veja as
janelas abaixo:

Em seguida d um click em "Mais Usados e ative a caixa "Mostrar guia Desenvolvedor na
Faixa de Opes.
Veja a janela a seguir:
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:4
Click em Ok p/ fechar as janelas e note que agora est disponvel a guia
"Desenvolvedor, que utilizaremos em nossos trabalhos.
Uma macro contm um conjunto de instrues que sero processadas passo a passo,
quando a macro for executada.
Obs.: Para a criao de macros usando o Gravador de Macros, se voc estiver
usando a apostila com o Word aberto, abra uma nova instncia do Word para
no interferir no documento em uso.
Para criar uma nova macro, d um click na guia Desenvolvedor e um click no item "Gravar
Macro:


Na janela que abrir, escolha o nome da nova macro (pode ser por exemplo,
"MinhaMacro) e escolha o seu documento, na caixa "Armazenar macro em:. Se voc
escolher "Todos os documentos, a macro ficar gravada no Word que est instalado no
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:5
micro. Faremos isso e ao final desta lio, ns a apagaremos. A janela para gravao da
macro, ficar como o exemplo abaixo:



D um click no boto OK. Note que o apontador do mouse ficou um pouco diferente. A
partir desse momento todas as aes que voc executar estaro sendo gravadas, at que
voc pare a gravao, dando um click no item retangular da janela "Parar gravao

Antes de parar a gravao vamos realizar algumas aes que ficaro gravadas em nossa
macro. Digite por exemplo seu nome, como por exemplo: "Ricardo, o Bo!!!,
formate-o com tamanho 16, tachado e cor vermelha.
Pare a gravao da macro.
Obs: Como est sendo utiliado o !ravador de macros, a seleo com o mouse no
" poss#vel. $ara selecionar o te%to, use a tecla &'ift ( as setas de direo.
Pronto podemos parar agora a gravao da macro. A partir de agora, toda vez que a
macro for executada, repetir as operaes que voc realizou.
Vamos testar a macro MinhaMacro:
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:6
- Apague o texto impresso pela macro em seu documento.
- D um click para acionar o item Macros, na guia Desenvolvedor e na janela que surgir,
selecione a macro que quer executar.

- Selecione a macro desejada (neste caso a macro MinhaMacro, o nome que voc
escolheu).
- D um click no boto "Executar e note que a macro repete os passos gravados.

ncluso de uma macro na Barra de Ferramentas de Acesso Rpido.
Vamos automatizar um pouco mais esse processo.
Podemos atribuir nossa nova macro "Barra de Ferramentas de Acesso Rpido para
podermos execut-la com mais comodidade.
Para isso, d um click no boto Office e em Opes do Word.
Na janela que abrir, na caixa da esquerda, click em "Personalizar
No item "Escolher comandos em: selecione "Macros e em seguida escolha a macro
desejada (neste caso "MinhaMacro). Click em "Adicionar.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:7
Na caixa da direita, selecione a macro desejada e click em "Modificar
Escolha o cone mais adequado e mude o "Nome para exibio. Pronto! D um click em
Ok e veja o boto p/ acionar a macro na Barra de Ferramentas de Acesso Rpido.
Quando terminar, voc pode utilizar a macro, com apenas um click do mouse.
Abaixo h um exemplo da janela "Opes do Word com os itens a serem configurados:

Obs: ) um clic* com o boto direito do mouse na +arra de ,cesso -pido e ve.a
as op/es.
Programao usando o VBA (Visual Basic for Applications):
Vamos agora verificar a parte mais poderosa do uso de macros atravs do VBA.
Para isso, selecione a guia Desenvolvedor e d um click no item "Macros.
Selecione a macro que interessa e d um click sobre o boto "Editar. Nesse momento o
Word abre o ambiente do VBA, que muito parecido com o ambiente do Visual Basic 6.0.
O ambiente VBA.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:8
Atravs desse ambiente, podemos fazer a programao que quisermos.
Note que as frases em cor verde so comentrios (iniciam por apstrofe) sendo utilizados
apenas para documentao.
Obs.: O gravador de macros inclui, na forma de instrues, todas as aes que
executamos quando criamos a macro.
Podemos modificar diretamente as instrues ou incluir novas instrues mudando o
comportamento da macro.
EE!C"C#O$
nclua manualmente na macro, as instrues abaixo:
Selection.MoveRight
Selection.Font.Color = wdColorBlack
Selection.TypeParagraph
Selection.TypeParagraph
Selection.Font.Size = 12
Salve as modificaes efetuadas: Arquivo / Salvar normal
Nossa macro agora ficar com a seguinte aparncia:
-(* &in.a&acro"%
/
/ &in.a&acro &acro
/ &acro gra0ada p/ a(la Prog# &icro#
/
-election#12pe1ext 1ext:345icardo o Bo6664
-election#&o0e7eft 8nit:39d'.aracter: 'o(nt:32: Extend:39dExtend
-election#)ont#-i;e 3 $<
-election#)ont#8nderline'olor 3 9d'olorA(tomatic
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:9
-election#)ont#8nderline 3 9d8nderline-ingle
-election#)ont#'olor 3 9d'olor5ed

/=ncl(s>es man(ais: sem (so do gra0ador de macros#

-election#&o0e5ig.t
-election#)ont#'olor 3 9d'olorBlac?
-election#12peParagrap.
-election#12peParagrap.
-election#)ont#-i;e 3 $2
End -(*
Execute-a, verifique como funciona, analise as instrues da macro e explique o
funcionamento.
Obs.: Estando no ambiente do VBA %oc& pode obter a'uda sobre (uais(uer
instru)es ou ob'etos (ue dese'ar. Para isso* selecione a instruo ou ob'eto
e pressione a tecla +,.
Por e-emplo* selecione a pala%ra Move-i!'t e pressione +,.
Obs.: Para alternar entre a 'anela do VB e a 'anela do .ord* pressione Alt / +,,.
E-erc0cio: Altere manualmente a macro para (ue* ap1s e-ibir o te-to anterior*
escre%a seu nome em taman2o 34* em negrito* it5lico e sublin2ado. Ap1s
isso* o te-to de%e %oltar ao normal e com taman2o do fonte ,3.
Sugesto: Crie uma nova macro p/ ver como se faz negrito, itlico e sublinhado, copie o
cdigo na macro MinhaMacro e em seguida, apague a macro de exemplo. Veja abaixo:

Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:10
Obs.: 6ote (ue as macros so para o VB* apenas P!OCE7#8E69O$* dentro da
pasta :81dulos;
Aps a cpia e adequao das instrues de MinhaMacro, esta dever estar mais ou
menos assim:

E-erc0cio : $upon2amos (ue dese'amos acionar a calculadora do .indo<s.
Crie uma nova macro chamada Calculadora, coloque um boto na "Barra de Ferramentas
de Acesso Rpido, com o cone de uma calculadora, sendo que quando esse boto for
acionado, executado o programa "calc.exe.
Passos:
- Guia Desenvolvedor / Gravar Macro
- Nome da macro = Calculadora
- Armazenar nova macro em = Todos os Documentos
- Descrio : Chama a calculadora do Windows
- Boto / OK configurar o boto.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:11
- Parar gravao
Em seguida* %amos editar manualmente a macro Calculadora:
tens:
- Guia Desenvolvedor / Macros / Editar
Digitar na Sub Calculadora(): Shell ("C:\Windows\System32\calc.exe ")
Obs.:
a) A instruo $2ell(: camin2o = programa ;) e-ecuta programas e-ternos
b) A instruo acima e-ecuta o programa calc.e-e (ue est5 na pasta
c:><indo<s.
Nossa Procedure ficar assim:

Obs.: Caso a Calculadora no este'a na pasta indicada acima* locali?e@a e corri'a o
programa.
- Voltar ao ambiente do Word (alt + F11).
- Testar a macro.
E-erc0cios:
Obs. 9odos os e-erc0cios sero apresentados ao professor* para a%aliao.
1-Fazer uma macro de nome "TestenputOutput que utilize:
- variveis - a maneira que manipulamos valores em programao.
- inputbox uma funo do VBA que nos permite a entrada de dados em um
programa.
- msgbox uma funo do VBA que nos permite exibir mensagens para o
usurio.
Essa macro dever declarar uma varivel do tipo string que receber uma frase
digitada pelo usurio.
Em seguida, ser exibida uma caixa de mensagem com a frase digitada. Quando
for dado o click no boto Ok da caixa de mensagem, a frase dever ser enviada
como texto para o documento do Word onde se executou a macro.
A codificao da macro ser mais ou menos como a seguir:
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:12

Complementao:
a) Na msgbox a frase digitada dever aparecer na segunda linha da caixa de
mensagem - use chr$(13) para concatenao de strings e mudar a linha.
b) O string a exibir no documento do Word deve ser no tipo de fonte "Times New
Roman (Selection.Font..Name="Times New Roman), O tamanho deve ser 16,
negrito, itlico, azul.
c) Aps a exibio, o tamanho deve ser 12, preto, no itlico no negrito.
2-Fazer uma macro que quando executada, exibe uma "nputBox solicitando o texto
para o cabealho do documento do Word. Se nada for digitado, ao ser pressionado o
boto Ok, o cabealho padro "Cabealho de Documento - Para Aula Prg Micro
exibido. Se um texto for digitado, esse texto ser o cabealho.
3-Uma boa maneira de transitar dados entre aplicaes Windows, pela rea de
Transferncia. Modifique a macro que aciona a calculadora e faa modificaes para que
o clculo efetuado na calculadora e mandado para a rea de Transferncia (Editar /
Copiar) aparea no texto, como no exemplo: "Valor calculado pela calculadora = 9999.
Obs. O fato de a macro ter e-ibido a calculadora no significa (ue a e-ecuo da
macro parou nesse ponto e (ue este'a aguardando alguma ao do usu5rio. As
instru)es ap1s a e-ibio da calculadora foram todas e-ecutadas e o
processamento da macro foi encerrado. $e ap1s (ou antes) de e-ibir a calculadora
%oc& escre%eu instru)es para pegar dados da Area de 9ransfer&ncia e :Colar; no
documento* essas instru)es so e-ecutadas imediatamente sem interrup)es atB
o fim da macro.
$e %oc& (uiser (ue o processamento d& uma pausa en(uanto %oc& fa? os c5lculos
com a calculadora e :Copie; o resultado para depois :Colar; no documento* utili?e
uma :inputbo-; ou uma :msgbo-; (ue interrompem o processamento atB (ue
ocorra o clicC no boto OC.
4-Fazer uma macro diretamente no Mdulo (sem usar o gravador) que exiba um
formulrio com layout e programao mais ou menos como a seguir.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:13

Layout do formulrio:

Programao associada ao formulrio:
A instruo "End encerra o processamento do VBA.
5-Fazer diretamente no Mdulo (sem usar o gravador de macros), uma macro de nome
"CalculaNota que exibe um formul5rio de acordo com o laDout a seguir. O usurio
digita as duas notas de um aluno e o programa calcula a mdia aritmtica.
O programa exibe no documento do Word a nota e a informao se o aluno est
"Aprovado ou "Reprovado.
A macro ser mais ou menos assim:

Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:14
Layout do formulrio:

Exemplo de programao associada ao formulrio acima:

Complementao:
A e-ibio no documento do .ord de%er5 ser:
@ $e o aluno esti%er apro%ado* o te-to ser5 na cor a?ul.
@ $e repro%ado* na cor %ermel2a. Ap1s a impresso* o te-to %oltar5 a ser preto.
Exerccios:
a) As caixas de texto txtNota1 e txtNota2 devem aceitar apenas valores numricos e a
vrgula decimal. A programao a seguinte:
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:15
Private Sub txtNota1_KeyPress(KeyAscii As nteger)
Dim tecla As String
tecla = Chr$(KeyAscii)
f (tecla < "0" Or tecla > "9") And tecla <> "," Then
Beep
KeyAscii = 0
End f
End Sub
b) As caixas de texto txtNota1 e txtNota2 devem aceitar apenas nmeros e apenas
uma Enica %0rgula decimal.
Obs.: a funo nStr( txtNota1.Text,,) retorna 0 se no achou a ", ou retorna a posio
onde encontrou a ",. Verifique o Help on line.
c) Se uma tecla invlida for digitada, o programa dever exibir mensagem de alerta.O
d) As caixas de texto txtNota1 e txtNota2 devem aceitar no mximo 4 caracteres.
e) nclua no formulrio do VBA, o Nome do Aluno. Todos os caracteres devem ficar
em maisculo. Use as funes do VBA: Asc, Ucase, Chr. Exemplo:
KeyAscii = Asc ( UCase ( Chr ( KeyAscii ) ) )
O nome do aluno dever aparecer no documento do Word, em cor preta, negrito,
tamanho 14.
Ap1s efetuar seus testes* %amos eliminar as nossas macros do .ord. Para isso* d&
um clicC com o boto direito do mouse no 0cone da Barra de +erramentas e os
remo%a.
Em seguida* d& um clicC no item 8acros* selecione cada macro e d& um clicC no
boto E-cluir.
Alguns programas deste projeto:
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:16
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:17
$egunda Parte F E-cel F Aula ,
Para iniciarmos, abra o Excel, para comearmos a criao de nossa macro, que ir
acrescentar um cabealho em qualquer planilha na qual for chamada.
No Excel o processo de criao de macro muito parecido com o Word. Para testar,
vamos seguir os mesmos passos usados no Word para criar uma nova macro:
Para isso, faa ficar disponvel a guia "Desenvolvedor, selecione-a e d um click no
itemGravar macro.
Na janela que abrir, configure o seguinte:
- Mude o nome da macro para " Cabealho;
- No item "Armazenar macro em, escolha "Esta pasta de trabalho.
Obs.:Se voc escolher "Pasta de tra*al.o pessoal de macros, a macro ficar gravada no Excel
que est instalado no micro. No faremos isso. A macro que criarmos ser disponibilizada
apenas na planilha que estamos desenvolvendo. Para isso, na caixa "Armazenar macro
em:, escolha "Esta pasta de trabalho".
- Em "Descrio, substitua o ***** por seu nome.
- Click em Ok.

A partir deste momento, tudo que voc fizer estar sendo gravado na macro, at que voc
d um click no boto .Parar gravao.

Quando parar a gravao, a macro ser gravada na forma de comandos VBA, com o
nome que voc escolheu.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:18
A macro que iremos criar far o seguinte:
- nsere uma linha a partir da primeira linha'
- Posiciona o foco na clula A1 e a formata com tamanho 14;
- Digita o texto "Programao em microinformtica, na clula A1;
Ento no Excel, siga os seguintes passos:
. Selecione a primeira linha e insira uma nova linha:
. Posicione o cursor na clula A1 e formate-a com tamanho 14;
. Na clula A1 digite o texto "Programao em microinformtica e pressione a tecla
"Enter.
. Encerre a gravao da macro, dando um click no boto "Parar Gravao.
Pronto: Nossa macroCabealho est gravada. Vamos v-la. D um click no boto
"Macros, selecione a macro "Cabealho e d um click no boto "Editar
Aparecer uma janela parecida com a abaixo:

A figura acima mostra uma parte do ambiente de desenvolvimento do VBA. Explore a
macro Cabealho...
Obs. Comentrios: Em VB iniciam com apstrofo, ficam na cor verde e servem apenas
para a documentao do programa.
A macro "Cabealho est gravada em nossa planilha do Excel. Vamos execut-la. Para
voltar ao Excel ou vice-versa, use a combinao de teclas Alt + F11.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:19
Apague o contedo da clula A1 (Editar / Limpar / Tudo) e execute a macro Cabealho
que voc criou, para ver seu efeito.
Para execut-la, abra selecione a guia "Desenvolvedor, d um click no boto "Macros,
escolha a macro "Cabealho e d um click em "Executar.
Aps execut-la, volte ao ambiente do VBA, com a combinao de teclas Alt + F11 para
estud-la um pouco melhor.
Obs. "O gravador de macros do Excel gera a parte mais "pesada da codificao,
gerando inclusive algumas instrues desnecessrias, que deixam a execuo da macro
mais lenta.
Podemos analisar e modificar as instrues da macro para melhor adequ-la a nossas
necessidades.
Por exemplo, podemos eliminar as instrues:
Podemos tambm substituir a instruo "ActiveCell.FormulaR1C1 = "Prog. Micro",
Por ActiveCell.FormulaR1C1 = inputbox ("Digite o Cabealho desejado...)
Faa essas modificaes, execute a macro e veja o efeito.
Obs.: Voc pode executar a macro, pressionando a tecla F5. Se voc estiver no ambiente
do VBA e pressionar F5, a macro ser executada o foco volta ao ambiente do VBA.
-Para ver o efeito da execuo da macro, use Alt + F11 (Mostra a planilha).
-Limpe novamente os textos da planilha e execute a macro novamente.

Criando macros sem o uso de gra%ador:
Abra o editor do VBA (Alt + F11), e digite aps o "End Sub do procedimento "Sub
Cabealho:
Sub Teste_Cabecalho_Com_Data()
Note que aps voc pressionar Enter, o programa inclui automaticamente o "End sub.
Digite em seguida, os comandos abaixo, deixando a procedure da forma:
$ub 9esteGCabecal2oGComG7ata()
!ange(HA,H).$elect
Acti%eCell.+ormula!,C, I #nputBo-(H7igite o Cabecal2o : H* HA 9 E 6 J K OH) / $tr(7ate)
End $ub

Obs. : A expresso Str ( Date) concatenada string que ser digitada na nputBox. Ela
composta por duas funes do VBA:
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:20
Str converte nmero em texto.
Date retorna a data do computador.
Pressione F5 para execut-la e veja o efeito. Obs. Quando se pressiona F5, executado
o procedimento onde est o foco (cursor do editor).
Volte para o ambiente do Excel (Alt + F11) e verifique que o procedimento
9esteGCabecal2oGComG7ata aparece junto com a macro anterior (Cabealho).
A qualquer momento, o ambiente do VBA dispe de um Help, de onde se podem obter
informaes valiosas. Para acionar o Help, basta selecionar o objeto ou instruo que se
necessita ajuda e pressionar a tecla F1. Tente com "#nputbo-; da macro acima.
Lso de formul5rios:
Utilizao de formulrios na programao com VBA: Utilizam-se formulrios de maneira
similar programao em VB. No formulrio, so includos componentes tais como
botes, caixas de texto, labels etc. que respondes a eventos provocados pelo usurio.
Para testar isso, feche o Excel, e atravs do "Windows Explorer copie para sua pasta
ou seu pen dri%e, o arquivo "Livros.
Abra o arquivo "Livros de sua pasta ou pen drive, contendo a planilha "Estoque, igual
abaixo:

Obs.: 6o Office 344M* o n0%el de segurana aumentou. Ao sal%ar
uma planil2a (ue conten2a macros* no item de menu :$al%ar
Como; escol2a uma pasta :Pasta com 8acros E-cel;. $e isso
no for feito* a planil2a ser5 sal%a sem as macros e %oc& perder5
todo o seu trabal2o.
Crie uma macro de nome TstForm, sem nenhuma programao (click no boto "Gravar
Macro ).
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:21

Pressione o boto OK e em seguida pare a gravao. Pronto! Gravamos uma macro de
nome TstForm, sem nenhuma programao. Agora, abra o ambiente do VBA, com a
combinao Alt + F11. Na janela "Project Explorer, abra a pasta Mdulos/Mdulo1, que
onde esto as macros.
nclua um formulrio associado sua planilha. v ao ambiente do VBA e d click nos itens
nserir / UserForm. Voc ver a seguinte janela:

Atravs dessa janela voc ir elaborar e programar a interface com a qual o usurio ir
manipular dados na planilha.
Obs.: Estrutura de comandos e programao em VBA aos objetos so associadas
propriedades, que so as caractersticas do objeto. Por exemplo, o tamanho, cor etc so
propriedades de um objeto. Aos objetos tambm so associados mtodos (funes)
exemplo Range("A2:A6).Select deixa selecionadas as celulas A2 at A6.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:22
Variveis a maneira pela qual manipulamos valores em programao. Exemplo de
criao de variveis em VBA :
Private Sub UserForm_Click()
Dim x As String
x = "Bem vindos ao VBA..."
FrmVendaLivros.Caption = x
End Sub
Selecione o formulrio e na janela "Propriedades digite, na propriedade Caption, o texto
"Venda de Livros.
nclua no formulrio os componentes abaixo e configure o formulrio de acordo com o
seguinte layout:

Obs.: vamos mudar todos os nomes dos componentes, de acordo com seu tipo e objetivo:
Exemplos:
Formulrios inicia com Frm exemplo FrmVendaLivros
Caixa de Combinao - nicia com Cxc exemplo CxcLivro
Label nicia com Lbl exemplos LblValorUnit, LblValortotal
Caixa de Texto nicia com Txt exemplo TxtQuantidade
Boto de comando inicia com Cmd exemplo CmdCalcula
Para isso, selecione cada componente e altere a propriedade Name na janela de
propriedades.
Para executar o formulrio, vamos criar nossa procedure, digitando diretamente na Macro
TstForm:
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:23
Sub TstForm()
FrmVendaLivros.Show ' Esta instruo exibe e executa o formulrio FrmLivros.
End Sub
Pressione a tecla F5 para ver o programa funcionando.
Note que os componentes esto prontos e funcionando, porm no respondem aos
eventos provocados pois estes (os eventos) no esto sendo tratados. Faremos o
tratamento a seguir.
Feche o formulrio e volte janela da planilha (Alt + F11), selecione a rea igual abaixo,
d o nome a essa seleo de "TabLivros e pressione a tecla Enter.

Volte ao ambiente do VBA, selecione o componente CxcLivros e coloque em sua
propriedade RowSource, o texto "TabLivros, que o nome que voc colocou na regio
selecionada da planilha.
Execute novamente o programa (tecla F5) e d um click no componente CxcLivro.
Note que o componente responde ao evento, trazendo a tabela TabLivros.
Vamos continuar nossa programao. Para voltar fase de projeto, interrompa a
execuo do programa.
Duas funcionalidades de nosso programa sero:
a) Quando ocorrer o click no nome do livro, dever surgir o valor unitrio no label de
nome LblValorUnit.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:24
b) Se digitarmos a quantidade de livros e pressionarmos o boto "Calcula, o
programa dever exibir o valor Total da compra, no label LblValorTotal.
Programao dos :9ratadores de E%entos; do VBA:
A janela de programao abre-se ao ocorrer o click duplo no componente que desejamos
programar. Essa janela tem a seguinte aparncia e a programao ser a seguinte:

Faa o teste e verifique o funcionamento do programa.
Selecione um livro na caixa de combinao, digite a quantidade desejada e pressione o
boto "Calcula. Ao fazer isso, o tratador do evento Click do boto executado e o valor
total dos livros calculado.
Exerccios:
1) Fazer o valor unitrio aparecer formatado, com centavos e separador de milhares.
sso pode ser feito com ajuda da instruo "format. Veja o exemplo abaixo:
Private Sub cxcLivro_Change()
lblValorUnit.Caption = Format(cxcLivro.Column(3), "R$##,###.00")
End Sub
2) Note que o valor unitrio fica muito bonito formatado, s que o programa no
funciona mais. Verifique o motivo e conserte-o.
3) O campo "Quantidade deve aceitar apenas nmeros. Lembra do programa de
clculo da mdia que fizemos quando estudamos o VBA p/ Word? bem parecido.
4) Formatar em formato de moeda (R$) com centavos, o campo "Valor Total.
5) nclua uma caixa de texto para que o operador possa oferecer um desconto no
preo da compra. Caso o desconto exceda 20% o programa deve alert-lo sobre
esse fato, mas deve realizar o clculo assim mesmo. Use a procedure do VBA
msgbox. Use o Help para ver seu funcionamento.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:25
6) nclua um label p/ exibir separadamente o valor do desconto.em moeda.
7) O campo em que o operador vai informar o desconto, deve aceitar somente
nmeros e o ponto decimal. Note que o desconto deve ser um valor real. Se voc
for usar variveis reais, a declarao , por exemplo: dim desconto as sin!le.
8) Formate adequadamente todos os valores em formato de moeda para exibio nos
campos do formulrio.
Use a instruo Format. Exemplo, supondo-se que valorTotal varivel real, a
instruo de formatao do campo no formulrio, ser mais ou menos como abaixo:
0bl1alor2otal.Caption34ormat 5 valor2otal, 6-78,888.996:

Formato sugerido do formulrio "Venda de Livros at agora:
Para finalizar, selecione o boto e atribua para "True sua propriedade "Default. Se a
propriedade default de um boto estiver True, voc pode executar o programa
associado ao evento Click desse boto, pressionando a tecla "Enter.
Ainda no boto, coloque a letra "C na propriedade "Accelerator e note que a letra C do
"Calcula, ficou sublinhado. Agora voc pode executar o programa do boto com a
combinao de teclas Alt + C.
&alve a planil'a, 2este o pro!rama e prepare;se para apresent;lo.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:26
Aula 3 de programao com E-cel
Vamos continuar desenvolvendo nossa aplicao com VBA.
Abra o arquivo Livros.xls que utilizamos na aula anterior. Ative o ambiente do VBA (Alt +
F11)
Criao e uso de fun)es:
Podemos criar funes em VBA e utiliz-las na planilha Excel.
Por exemplo, suponha que precisamos da informao da situao de nosso estoque, da
seguinte maneira:
- se o estoque estiver igual ou abaixo de 3 unidades, isso significa que o esto(ue estar5
bai-o.
- se estiver entre 4 e 14 unidades, estar5 bom (normal).
- com 15 unidades ou mais, estar5 muito alto.
Podemos usar as funes nativas do Excel e criar um expresso para resolver isso. Uma
soluo melhor, seria criar a seguinte funo em VBA, que deve ser digitada no mesmo
Mdulo que contm a procedure TstForm:
Function SaldoEstoque(estoque As nteger) As String
f estoque <= 3 Then SaldoEstoque = "Estoque Baixo"
f estoque > 3 And estoque <= 15 Then SaldoEstoque = "Estoque Normal"
f estoque > 15 Then SaldoEstoque = "Estoque Em Excesso"
End Function
Sub TstForm()
FrmVendaLivros.Show ' Esta instruo exibe e executa o formulrio FrmLivros.
End Sub
Agora basta chamar a funo SaldoEstoque, na planilha e utiliz-la:

Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:27

Verifique que o formulrio FrmVendaLivros deve estar mais ou menos com a aparncia:

Lembre-se que se o desconto oferecido for maior que 20%, o programa exibe uma
mensagem de aviso, porm faz a operao assim mesmo. Vamos alter-lo para que o
usurio possa cancelar a operao. Para isso, usaremos a msgbox na forma de funo,
onde ser retornado o valor do boto Yes ou No, que o usurio clicou.
O cdigo ficar mais ou menos igual ao abaixo:
Private Sub CmdCalcula_Click()
Dim ValTotal As Single
Dim ValDesconto As Single
Dim ValComDesconto As Single
f Val(txtDesconto.Text) > 20 Then
f MsgBox(" Ateno: Desconto maior que 20%...", vbYesNo) = vbNo Then
Exit Sub
End f
End f
ValTotal = Val(TxtQuantidade) * Val(LblValorUnit.Caption)
ValDesconto = Val(txtDesconto.Text) / 100 * ValTotal
ValComDesconto = ValTotal - ValDesconto
LblDesconto.Caption = Format(ValDesconto, "#,###.00")
LblValorTotal.Caption = Format(ValComDesconto, "#,###.00")
End Sub
Exerccio: Se o percentual do desconto for maior que 20% e o usurio pressionar o boto
"No, o programa dever limpar os valores dos labels LblDesconto, LblValorTotal e dever
mandar o foco para a caixa de texto txtDesconto, deixando os valores dessa caixa
selecionados.
Para isso, utilizar o mtodo setfocus e as funes:
txtDesconto.SetFocus
Txtdesconto.SelStart=0
Txtdesconto.Sellength=len(Txtdesconto.text)
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:28
Essa parte do programa ficar mais ou menos assim:
f Val(TxtDesconto.Text) > 20 Then
f MsgBox(" Ateno: Desconto maior que 20%...", vbYesNo) = vbNo Then
LblDesconto.Caption = ""
LblValorTotal.Caption = ""

TxtDesconto.SetFocus

TxtDesconto.SelStart = 0
TxtDesconto.SelLength = Len(TxtDesconto.Text)
Exit Sub
End f
End f
Continuando nosso projeto, inclua um novo formulrio (nserir UserForm) e configure-o
como abaixo:

Os nome dos componentes sero:
Name do formulrio: FrmLivraria,
Name dos botes: cmdVendas, cmdEstoque, CmdFim.
Os bot)es cmdVendas e cmdEsto(ue de%ero iniciar com a propriedade :Visible;
false. Ou se'a* no estaro %is0%eis. +icaro dispon0%eis* ou se'a* %is0%eis* somente
(uando o usu5rio acertar a sen2a.
Name das caixas de texto: txtNome, txtSenha.
nsira na propriedade Picture do formulrio FrmLivraria, uma das fotos da pasta
...Server2000 / Prg_Micro.
Obs.: Podemos adequar o tamanho da figura ao formulrio, atravs da propriedade
PictureSizemode.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:29
Especificaes e exerccios associados a este formulrio:
1) Ao iniciar a execuo da macro, o formulrio "frmLivraria exibido, solicitando ao
usurio que digite seu nome e senha.
2) As letras digitadas no campo nome, devem ficar todas em maisculo. Vide exemplo
abaixo:
3) Se o foco estiver em txtNome e for pressionada a barra de espao, o foco deve
mudar para txtSenha. Exemplo:
f KeyAscii = 32 Then txtSenha.SetFocus
Obs.: Para digitao e %erificao da sen2a* o pro'eto de%e obedecer Ns especifica)es a
seguir:
a) Se a senha for correta, o programa exibe a mensagem: "Bem Vindo Senhor
**nome**!. Caso contrrio, o programa exibe: "Caia Fora!....
b) Os caracteres digitados na senha aparecem como "*.
c) A sequncia de caracteres do nome e da senha so finalizados pela barra de
espao.
d) A senha correta "1234.
e) O usurio pode fazer at trs tentativas p/ acertar a senha. A cada tentativa, o
programa informa que a senha informada foi incorreta e quantas tentativas faltam.
Se o usurio acertar a senha ou se ocorrerem mais de 3 tentativas, o programa
deve encerrar a execuo.
f) nclua o boto "cmdFim com a propriedade Caption Fim e com a propriedade
"Accelerator = "F, que ao receber o click do mouse encerra o programa. A
instruo "End.
g) nclua os botes "cmdVendas com caption "Vendas e o boto "cmdEstoque com
caption "Estoque. Esses botes estaro inicialmente invisveis e s ficaro visveis
quando o usurio acertar a senha.
Ao ser dado o clique no boto cmdVendas, exibido na forma modal, o formulrio
FrmVendaLivros. Dever ter a forma:
Private Sub CmdVendas_Click()
FrmVendaLivros.Show 1
End Sub
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:30
Ao ser dado o clique no boto CmdEstoque, exibido o formulrio FrmEstoque que
desenvolveremos posteriormente.
Ao ser dado o clique no boto CmdFim, o programa encerrado. Veja o exemplo abaixo:
Private Sub CmdFim_Click()
Unload FrmLivraria
End Sub
Crie no Mdulo1, a procedure "Livraria, que ao ser executada, exibe o formulrio
FrmLivraria. Veja a figura:

&alve a planil'a, 2este o pro!rama e prepare;se para apresent;lo.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:31
Aula O de programao com E-cel
nclua na Barra de Ferramentas de Acesso Rpido, o cone mais adequado para executar
a macro "Livraria que voc fez na aula anterior (Veja como voc fez no Word pg 5 da
apostila).
Teste a execuo do programa para certificar-se que est tudo bem.
A interface de seu programa dever estar mais ou menos assim:

Exerccio: nclua no formulrio FrmVendaLivros, o boto "Volta, que ao receber o click do
mouse, fechado e o controle volta ao formulrio FrmLivraria.
Crie o formulrio FrmEstoque, com a seguinte aparncia:

Esse formulrio ser acionado quando o boto CmdEstoque, do formulrio FrmLivraria,
for clicado.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:32
E-erc0cios:
1) Os campos Cdigo e Quant. s devem aceitar nmeros.
2) O campo Preo deve aceitar apenas nmeros e uma nica vrgula decimal.
3) Nos campos Nome Autor e Editora todos os caracteres devem ficar em maisculo.
4) ncluir instrues para que quando for pressionado o boto Ok, o programa
pergunta ao usurio se quer incluir mais algum livro. Se o usurio quiser continuar,
todas as caixas de texto sero limpas e o foco vai para TxtCodigo. Se o usurio
quiser parar, o formulrio fechado e o controle volta para frmLivraria.
Programao inicial associada a esse formulrio:
Private Sub CmdCancela_Click()
Unload FrmEstoque
End Sub
Private Sub CmdOk_Click()
Dim endereco As String

Sheets("Estoque").Select
Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveCell.Offset(0, 0).Value = TxtCodigo.Text
ActiveCell.Offset(0, 1).Value = TxtNome.Text
ActiveCell.Offset(0, 2).Value = TxtAutor.Text
ActiveCell.Offset(0, 3).Value = TxtEditora.Text
ActiveCell.Offset(0, 4).Value = TxtPreco.Text


ActiveCell.Offset(0, 5).Value = TxtQuant.Text
ActiveCell.Offset(0, 5).Select

endereco = ActiveCell.Address
ActiveCell.Offset(0, 1).Value = "=SaldoEstoque(" + endereco + ")"

FrmEstoque.Hide

End Sub
Este apenas um prottipo de programa em VBA para o Excel, visando vislumbrar uma
pequena parcela do potencial dos recursos que o software pode oferecer.
$al%e a planil2a Pi%ros* teste todo o pro'eto e prepare@se para apresent5@lo ao
professor.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:33
9erceira Parte F Access FAula ,
Aula , de Access.
Para trabalharmos com a programao do Access, iremos inicialmente reduzir o nvel de
segurana para evitarmos problemas com a execuo de macros. Para isso, localize e
abra o Access. No boto Office, pressione o boto "Opes do Access e selecione as
janelas:
Central de Confiabilidade/Configuraes da Central de Confiabilidade/Configuraes de
Macro. Em seguida, habilite todas as macros e fec2e o Access. Confira a figura abaixo:

Copie o arquivo do Access !e%enda344O.mdb do diretrio "server2000\Prg Micro para
seu pendrive e abra o arquivo dando-lhe um duplo click
Esse arquivo possui tabelas contendo registros de veculos e de vendedores em uma
revenda de veculos usados. Veja na figura abaixo:

Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:34

Selecione a tabela "veculos, selecione a guia "criar e d um click no cone "Design de
Formulrio

Crie o formulrio a seguir:
Na figura abaixo exibida a janela "Propriedades, o Formulrio e os controles que voc
pode colocar em seu formulrio.
Se a janela Propriedades no estiver visvel, d um click com o boto direito do mouse no
formulrio e, no menu popup que abrir, selecione o item "Propriedades.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:35

Na caixa de listagem da janela de propriedades, selecione "Formulrio e na guia Formato
selecione o item Legenda.
Digite o texto para a barra de ttulo do formulrio: "Formulrio de Veculos.
Em seguida, coloque duas caixas de texto no formulrio e formate-as como abaixo:

Execute o formulrio, pressionando a tecla F5. Seu formulrio, em execuo, dever ficar
parecido com a figura a seguir:
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:36

Para voltar ao modo de design, click no formulrio com o boto direito do mouse e
selecione "Modo Design.
Vamos colocar nomes coerentes nos componentes do formulrio. Os nomes devero
representar o tipo do componente e o que iro conter. Para representar o tipo de
componente, usaremos a seguinte padronizao:
- Nomes de caixa de texto devem iniciaro pelas letras txt exemplo: txtModelo, txtCor
etc.
- Nome de Label iniciar pelas letras lbl exemplo: lblModelo, lblCor etc.
- Boto de comando iniciar pelas letras cmd exemplo: cmdOk, cmdCancela etc.
- Boto de opo dever iniciar pelas letras opt exemplo: optopcao1, optopcao2 etc.
Outros tipos de nomes de componentes sero vistos oportunamente.
A padronizao de nomes para componentes muito importante para documentao e
tem por objetivo facilitar o desenvolvimento e manuteno de programas.
Vamos atribuir nomes s caixas de texto de nosso formulrio. Clique na caixa de texto
que conter o Modelo do veculo para selecion-la, selecione a guia "Outra e altere o
Nome para txtModelo. Faa o mesmo para a caixa que conter a cor do veculo.

Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:37
Vamos incluir em nosso formulrio, a tabela de onde viro os dados que iro aparecer nas
caixas de texto. Para isso, selecione o item "Formulrio na caixa de listagem da janela de
propriedades, e selecione a guia "Dados.
Selecione o item Fonte de registros e d um click no cone ".... Selecione a tabela
"veculos, d um click em Adicionar, em seguida d um click no item Fechar.
Na escolha do campo, selecione o item "veiculos.*. sso ir incluir em seu formulrio, a
tabela inteira.
Feche a janela "Formulrio1 construtor de consulta e salve-a. Veja a figura a seguir:

Vamos agora incluir os campos do banco de dados nos componentes do formulrio:
-Selecione a caixa de texto txtModelo, clicando nela com o boto direito do mouse.
-Escolha o item propriedades.
-Na guia Dados, abra o cone da "Fonte de controlee selecione o campo modelo,
-Faa o mesmo para o campo cor.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:38
Ponha o foco no formulrio e pressione a tecla F5 para ver o formulrio em execuo:

Obs. Se usarmos o assistente para criao de formulrio, esses passos sero feitos
automaticamente. Optamos por fazer manualmente visando a aquisio de habilidades
que usaremos posteriormente.
E-erc0cios para aula , com Access:
1 - nclua os campos ano e valor no formulrio, com nomes t-tAno e t-tValor. O
campo ano deve ser no formato nmero geral com zero decimais e o campo valor
deve ser no formato moeda com 2 decimais. As especificaes do tipo do campo so
definidas na guia "Formato.
2 - Fazer programao para que ao ser inserido um novo registro, o que for digitado no
campo modelo, fique em maisculo.
Procedimento:
a) Selecione a caixa de texto txtModelo e na janela "Folha de Propriedades
escolha a guia Evento.
b) Escolha o item "Ao pressionar tecla e d um click nos "... da direita da linha.
c) Na janela "Escolher construtor, selecione "Construtor de cdigoe d um click
no boto Ok.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:39

Ser oferecido para programao, o tratador do evento Keypress, que dever ser
programado da seguinte forma:
Private Sub txtModelo_KeyPress( KeyAscii As nteger )
KeyAscii = Asc ( UCase ( Chr ( KeyAscii ) ) ) ' Deixa os caracteres em maisculo.
End Sub
Obs: Para alternar entre a 'anela do VBA e do banco de dados*
pressione Alt / +,,.
3 - Fazer programao para que o ano de um novo veculo a ser digitado seja validado.
Ou seja, o ano s vlido se estiver entre 1900 e o ano atual + 1.
Para isso, selecione a caixa de texto txtAno e programe o evento "Antes de atualizar,
como abaixo:
Private Sub txtAno_BeforeUpdate(Cancel As nteger)
f Val(txtAno.text) < 1900 Or Val(txtAno.text) > Year(Date) + 1 Then
MsgBox " Ano invlido... Digite o ano correto!", vbCritical, "A T E N O"

Cancel = True 'Cancela a atualizao
End f
End Sub
4 O campo "valor deve aceitar apenas valores numricos e a vrgula decimal. A
programao a seguinte:
Private Sub txtValor_KeyPress(KeyAscii As nteger)
Dim TECLA As String
TECLA = Chr$(KeyAscii)
f (TECLA < "0" Or TECLA > "9") And TECLA <> "," Then
Beep
KeyAscii = 0
End f
End Sub
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:40
5 O campo valor deve aceitar apenas nmeros e apenas uma Enica %0rgula decimal.
Obs.: a funo nStr( txtValor.Text,,) retorna 0 se no achou a ", ou retorna a posio
onde encontrou a ",. Verifique o Help on line.
6 O campo ano deve aceitar apenas nmeros e no mximo 4 caracteres. Se for digitado
mais de 4 caracteres, exibir mensagem de alerta. Utlize a funo LEN que retorna o
comprimento de um string use o help para verificar.
7 No campo "cor todos os caracteres digitados dever estar em maisculo.
8 Os campos "ano e "valor devem aceitar a tecla BackSpace. O cdigo ASC dessa
tecla 8. Portanto, se keyascii for igual a 8, a tecla ser vlida.
9 Se uma tecla invlida for digitada, o programa dever exibir mensagem de alerta.
10 nclua no formulrio, os campos Estado e Placa. Todos os caracteres devem ficar em
maisculo.
11 nsira no banco de dados, atravs do formulrio, os registros abaixo:
MODELO COR ESTADO PLACA ANO VALOR
1 CORSA BEGE RJ CAU3254 1998 8000,00
2 CORSA VERDE SP BBJ2429 2000 12000,00
3 CORSA BRANCO BA EBF9553 2002 15000,00
4 CORSA PRETO SP GTH8865 1998 7500,00
12 Todos os campos devem aceitar a tecla "Tab. O valor ascii em decimal da tecla Tab
9. Pressionando-se a tecla Tab, a ordem de tabulao deve ser adequada ao
usurio (de cima p/ baixo) verifique.
$al%ar o ar(ui%o :!e%enda; e preparar para apresentar o formul5rio ao professor.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:41
Aula 3 de Access.
Abrir o arquivo Revenda utilizado na aula anterior. O formulrio deve estar com a seguinte
aparncia:

Vamos personalizar um pouco nosso formulrio e depois iremos remover o componente
padro de navegao de registros. Para isso, vamos selecionar o cone do componente
"boto de comando na Caixa de ferramentas e vamos inclu-lo no formulrio. Note que o
VBA abre uma janela para escolhermos qual a categoria de boto ns queremos. Vamos
selecionar a categoria Navegao de registro.
Vamos inserir em nosso formulrio, todos os bot)es dessa categoria, exceto o boto
"localizar prximo.

Para cada boto que voc inserir, click no boto Avanar e configure as propriedades do
boto a seu gosto. muito importante atribuir um nome de acordo com nossa
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:42
padronizao, como por exemplo, para o boto "r para primeiro registro, o nome
cmdPrimeiroRegistro, cmdProximo etc..
Faa isso para todos os botes.
E-erc0cio: Coloque mais dois botes da categoria Operaes de registro: Adicionar novo
registro e Excluir registro. Mude seus nomes para cmdAdicionaNovo e cmdExcluir, por
exemplo.
Nosso formulrio ficar mais ou menos assim:

Agora que j temos nossos prprios botes de controle dos registros, no precisamos
mais do controle fornecido automaticamente com o relatrio. Para elimin-lo, no modo de
design do formulrio, coloque "No no item Formulrio / Formato / Botes de navegao.
Execute o formulrio para verificar e teste todos os botes que voc colocou. Note que o
editor de VBA do Access providenciou toda a programao p/ voc. Abra a janela de
cdigo e verifique:

Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:43
Note a palavra "DoCmd na figura acima. Dizemos que DoCmd um objeto do modelo de
objetos do Access. O objeto DoCmd suporta vrios "mtodos que provocam vrias aes
na programao em VBA para o Acess.
Veja a seguir, a programao automtica gerada pelo VBA ao evento click no boto
cmdProximo, onde o objeto DoCmd executa o mtodo GoToRecord, com o argumento
acNext:
Private Sub cmdProximo_Click()
On Error GoTo Err_cmdProximo_Click
DoCmd.GoToRecord , , acNext

Exit_cmdProximo_Click:
Exit Sub
Err_cmdProximo_Click:
MsgBox Err.Description
Resume Exit_cmdProximo_Click

End Sub
E-erc0cios:
Se um veculo do banco de dados for vendido, o vendedor dever informar a venda, a fim
de receber sua comisso.
Para que o vendedor possa fazer isso, inclua no formulrio, o boto "Vender, que ao ser
pressionado solicita o cdigo do vendedor. Esse cdigo dever ser inserido no campo
"codvendedor do banco de dados Veculos. A digitao do cdigo poder ser feita por
uma nputBox.
#ncluso de um boto comum no formul5rio (sem programao autom5tica):
Para incluir um boto comum no formulrio proceda da seguinte maneira: nclua um boto
no formulrio e na janela apresentada, onde aparecem as categorias de boto oferecidas,
pressione a tecla Cancelar.
Na janela de propriedades, selecione a guia Outra e mude o nome para cmdVender.
Na guia Formato, mude a legenda para &Vender. Com a legenda dessa maneira, voc
poder executar o programa associado ao boto, pressionando Alt + V.
O cdigo do vendedor a ser digitado dever possuir dgito de controle que ser verificado
atravs de clculo pelo mdulo 11.
O dgito verificador (dv), ou dgito de controle (dc) calculado pelo mdulo 11 bastante
seguro, e usado para validao de CPF, RG, CGC e vrios outros cdigos oficiais.
Um dgito de controle calculado pelo mdulo 11 da seguinte maneira : Por exemplo,
supondo-se o cdigo de vendedor 200506003, fazem-se os clculos.
3 x 2 = 6
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:44
0 x 3 = 0
0 x 4 = 0
6 x 5 = 30
0 x 6 = 0
5 x 7 = 35
0 x 8 = 0
0 x 9 = 0
2 x 10= 20
+ --------
91
Pega-se o resultado da soma ( 91), divide-se por 11 e pega-se o resto, que neste caso
3.
91 / 11 = 88 Resto = 3
Da, faz-se 11 3 = 8. Pronto. O dgito calculado 8, e o cdigo do vendedor, com dgito,
ficar: 200506003-8
Se o resto da diviso por 11 for 0 ou 1, o dgito o prprio resto.
Na programao usamos a funo Mod do VBA, que retorna o resto da diviso de um
nmero inteiro por outro. Exemplo DigitoLido=CodigoLido mod 10
Nas divises, para truncar o nmero em seu ltima casa, usamos a funo nt para que o
VBA no cause arredondamento no resultado da diviso. Por exemplo, codigo =
nt(codigo / 10)
Acompan2e o programa a seguir:
Private Sub cmdVender_Click()
Dim codigolido As Long
Dim digitolido As nteger
Dim codigo As Long
Dim digito As nteger
Dim soma As nteger
Dim mult As nteger
mult = 2
soma = 0

codigolido = Val(nputBox(" Digite o cdigo do vendedor: ", " V e n d a d e V e c u l o"))
digitolido = codigolido Mod 10
codigo = nt(codigolido / 10)

While codigo > 0
soma = soma + (codigo Mod 10) * mult
mult = mult + 1
codigo = nt(codigo / 10)
Wend

digito = soma Mod 11
f digito > 1 Then digito = 11 - digito

Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:45
End Sub
O programa acima recebe um cdigo numrico de vendedor com dgito, separa esse
dgito e calcula, com o restante do nmero lido, um outro dgito com a finalidade de
verificar se o dgito calculado confere com o digito lido.
E-erc0cios:
1 Verificar se o usurio digitou apenas nmeros. Caso tenha sido digitado algum
caractere no numrico, exibir mensagem de erro e abandonar o procedimento.
Utilize a funo sNumeric. A programao ficar assim:
Dim codigostr As String
codigostr = nputBox(" Digite o cdigo do vendedor: ", " V e n d a d e V e c u l o")
' verifica se foram digitados s numeros.
f Not sNumeric(codigostr) Then
MsgBox "Nmero invlido! Digite apenas nmeros...", vbCritical, "ATENO"
Exit Sub
End f
2 - Verificar se o dgito calculado igual ao dgito lido. Se for igual, aceitar o cdigo do
vendedor e inclu-lo na tabela "Veiculos, no campo codvendedor, e exibir mensagem
"Venda efetuada com sucesso!
3 - Se o dgito no "bater, exibir mensagem de erro ao usurio e abandonar o
procedimento.
O cdigo ser mais ou menos como abaixo:
f digitolido = digito Then
codvendedor = codigolido ' codvendedor campo do Banco de Dados.

' A instruo abaixo salva o registro corrente - grava o codigo do vendedor.
DoCmd.RunCommand acCmdRefresh
MsgBox "Venda efetuada com sucesso!"
Else
MsgBox "Digito no bate. Tente novamente....", vbExclamation, "A T E N O"
Exit Sub
End f
4 Se a venda for concretizada e aps ser inserido com sucesso o cdigo do vendedor, o
boto cmdVender dever ficar desabilitado, com caption "Vendido. Usar a instruo
cmdVender.enabled = false.
5 Ao navegar pelo banco de dados, se o veculo estiver venda, ou seja, se o campo
de cdigo de vendedor ainda estiver em branco, o boto cmdVender dever ficar
2abilitado, e com caption = &Vender. Caso contrrio, ou seja, se o veculo j foi
vendido, consequentemente o campo "codvendedor estar preenchido. Nesse caso, o
boto cmdVender dever estar desabilitado, com caption "Vendido.
A programao ser mais ou menos como a abaixo:
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:46
f sNull(codvendedor) Then
cmdVender.Caption = "&Vender"
cmdVender.Enabled = True
Else
cmdVender.Caption = "Vendido"
cmdVender.Enabled = False
End f
A programao acima dever ser codificada em todos os botes de navegao.
6 Com objetivo de deixar o cdigo do evento Click do boto cmdVender mais enxuto e
mais elegante, criar a funo "CalculaDC que recebe o cdigo do vendedor, sem dgito
de controle, calcula e retorna o dgito calculado com base no cdigo recebido.
Utilize essa funo no evento click do boto cmdVender, ao invs daquele cdigo enorme.
Caso voc tenha dvidas quanto a partes do cdigo, veja exemplos nas prximas
pginas.
$APVE O P!OQE9O E P!EPA!E@$E P= AP!E$E69A@PO AO P!O+E$$O!.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:47
ALPA O 7E ACCE$$:
Abra o arquivo de Access Revenda da aula anterior e teste-o p/ verificar se tudo funciona
de acordo com as especificaes anteriormente fornecidas.
Lembre-se que a programao final do evento Click do boto cmdVender estava mais ou
menos assim (sem uso da funo CalculaDC):
Private Sub cmdVender_Click()
Dim codigostr As String
Dim codigolido As Long
Dim digitolido As nteger
Dim codigo As Long
Dim digito As nteger
Dim soma As nteger
Dim mult As nteger
mult = 2
soma = 0

codigostr = nputBox(" Digite o cdigo do vendedor: ", " V e n d a d e V e c u l o")

' verifica se foram digitados s numeros.
f Not sNumeric(codigostr) Then
MsgBox "Nmero invlido! Digite apenas nmeros...", vbCritical, "ATENO"
Exit Sub
End f

codigolido = Val(codigostr)
digitolido = codigolido Mod 10
codigo = nt(codigolido / 10)

While codigo > 0
soma = soma + (codigo Mod 10) * mult
mult = mult + 1
codigo = nt(codigo / 10)
Wend

digito = soma Mod 11
f digito > 1 Then digito = 11 - digito

f digitolido = digito Then
codvendedor = codigolido ' codvendedor campo do BD

' A instruo abaixo salva o registro corrente - grava o codigo do vendedor.
DoCmd.RunCommand acCmdRefresh
MsgBox "Venda efetuada com sucesso!"
Else
MsgBox "Digito no bate. Tente novamente....", vbExclamation, "A T E N O"
Exit Sub
End f

End Sub
6a aula anterior (uando %oc& e-ecutou o e-erc0cio nEmero R* desen%ol%eu e usou a
funo Calcula7C* o programa de%e ter ficado mais ou menos assim:
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:48
+unction Calcula7C(no%ocodigo As Pong) As #nteger
Dim codigo As Long
Dim digito As nteger
Dim soma As nteger
Dim mult As nteger

codigo = novocodigo
mult = 2
soma = 0

While codigo > 0
soma = soma + (codigo Mod 10) * mult
mult = mult + 1
codigo = nt(codigo / 10)
Wend

digito = soma Mod 11
f digito > 1 Then digito = 11 - digito

CalculaDC = digito 'Retorna o valor do digito calculado

End +unction
Pri%ate $ub cmdVenderGClicC()
Dim codigostr As String
Dim codigolido As Long
Dim codigo As Long
Dim digitolido As nteger

On Error GoTo ExibeErro:
codigostr = nputBox(" Digite o cdigo do vendedor: ", " V e n d a d e V e c u l o")

' verifica se foram digitados s numeros.

f Len(codigostr) > 10 Then
MsgBox "Cdigo com mais de 10 dgitos - redigite!"
Exit Sub
End f

f Not sNumeric(codigostr) Then
MsgBox "Nmero invlido! Digite apenas nmeros...", vbCritical, "ATENO"
Exit Sub
End f

codigolido = Val(codigostr) 'converte o codigo p/ numero
digitolido = codigolido Mod 10 'separa o digito lido
codigolido = nt(codigolido / 10) 'tira o digito do codigo - trunca

f digitolido = CalculaDC(codigolido) Then 'Chamada da funo VerificaDC
'o digito bateu...
codvendedor = Val(codigostr) ' codvendedor campo do BD

'A instruo abaixo salva o registro corrente - grava o codigo do vendedor.

DoCmd.RunCommand acCmdRefresh 'Grava registro corrente

Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:49
MsgBox "Venda efetuada com sucesso!"
cmdVender.Caption = "Vendido"
cmdProximo.SetFocus
cmdVender.Enabled = False
Else ' No else, o digito no bateu...
MsgBox "Dgito no bate - redigite!", vbCritical, "A T E N O"
Exit Sub
End f
Exit Sub
ExibeErro:
MsgBox Error(Err)
End $ub
Alguns problemas podero ocorrer* (ue de%ero ser solucionados:
Verifique os aspectos da esttica do formulrio: alinhamento e tamanho dos
componentes, bom balanceamento de cores (no deve ser um carnaval e nem totalmente
cinza), etc.
A seguir algumas dicas sobre problemas obser%ados em pro'etos anteriores:
1) Ao inserir um novo registro o foco deve ir para txtModelo (txtModelo.SetFocus).
2) Verifique que ao inserir um novo registro, se o campo de cdigo do vendedor
estiver com o valor zero, mesmo assim o boto cmdVender dever estar habilitado.
3) Se o campo do banco de dados de cdigo de vendedor estiver preenchido,
significa que aquele veculo j foi vendido. Portanto o boto cmdVender dever
estar desabilitado com o caption "Vendido.
Faa uma reviso geral at este ponto do projeto. O formulrio deve estar minimamente
com a seguinte aparncia:

Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:50
Continuao: 7ando continuidade a nosso pro'eto* faa os e-erc0cios a seguir:
1 - ncluir no projeto um formulrio de nome frmVendedor, contendo todos os campos da
tabela "vendedor. Mude os nomes das caixas de texto desse formulrio, para nomes
compatveis com caixas de texto, de acordo com o padro adotado por ns:
txtCodVendedor, txtNome, txtEndereco, txtEstadoCivil, txtSalarioFixo.
2 - ncluir botes para navegao no banco de dados e um boto do grupo "Operaes de
registro com ao "Adicionar registro, para podermos incluir novos vendedores em
nosso banco de dados.
3 Eliminar o componente padro de navegao do relatrio.
Esse formulrio dever ficar minimamente com a se!uinte aparncia:

4 - Para que o usurio no possa alterar os registros j existentes no banco de dados,
programar o evento Form_load() para desabilitar as caixas de texto do formulrio:
Private Sub Form_Load()
txtcodvendedor.Enabled = False
txtNome.Enabled = False
txtEndereco.Enabled = False
txtEstadoCivil.Enabled = False
txtSalarioFixo.Enabled = False
End Sub
5 Programar o evento click do boto cmdAdicionaVendedor para que:
- Desabilite todos os botes, inclusive ele prprio (exceto o boto Ok).
- Solicite o cdigo do novo vendedor (via nputBox)
- Verifique se o cdigo digitado composto s de nmeros (funo nsNumeric)
- Solicite que o cdigo seja digitado novamente, para verificar se igual ao anterior.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:51
- Utilize a funo CalculaDC para calcular o dgito de controle do cdigo do novo
vendedor.
- nclua esse dgito no cdigo do novo vendedor, coloque-o no campo codvendedor do
banco de dados de um registro novo.
- Libere as demais caixas de texto para digitao (propriedade enabled = true) e exiba
mensagem para o usurio digitar os dados do novo vendedor e em seguida
pressionar o boto "Ok.
- Ponha o foco na caixa de texto txtNome, para o usurio comear a digitao.
- Aps o boto Ok ser pressionado (evento click), os contedos das caixas de texto:
cdigo, nome, endereo etc, devero ser gravados no banco de dados
(DoCmd.RunCommand acCmdRefresh).
- Osbotes devero ser novamente habilitados e as caixas de texto devero ser
novamente desabilitadas.
Obs.: Para (ue uma funo ou procedimento possam ser utili?ados por todos os
formul5rios do banco de dados* necessitam estar dentro de um :81dulo;. Portanto*
inclua um m1dulo em seu pro'eto e copie a funo Calcula7C para dentro dele.
6- nclua na tabela Vendedor os registros abaixo, atravs do formulrio frmVendedor que
voc acabou de criar. Note que o cdigo de vendedor da tabela abaixo j est com dgito
de controle. Voc& de%e fornec&@lo sem o d0gito. O sistema ir calcular o dgito de
controle pelo mdulo 11 e o incluir no cdigo do vendedor:

Ap1s %erificar se tudo funciona* faa os acertos finais nas tabelas Veiculos e
Vendedor* do banco de dados !e%enda:
Verifique que na tabela Veiculos no deve haver registros de veculos usados para teste,
ou seja, com nomes do tipo "ABC. Se um veculo foi vendido o contedo do campo
"codvendedor deve ser um cdigo vlido, constante na tabela de vendedores.
Efetue a venda de alguns veculos, verifique se as tabelas Veiculos e Vendedor esto
com os dados corretos.
$APVE O P!OQE9O E P!EPA!E@$E PA!A AP!E$E69A@PO..
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:52
Aula S de Access.
Abra o arquivo Revenda, teste-o e verifique se tudo funciona a contento de acordo com o
que foi especificado.
At agora, temos dois formulrios: Relatrio de Veculos e Cadastro de Vendedor.
Nesta aula criaremos um relatrio de vendas efetuadas e um relatrio de veculos com
totais e quebras. Para exibio desses dois relatrios, criaremos um formulrio.
E-erc0cios: E-ecute os procedimentos a seguir:
Criao do primeiro relat1rio.
Nosso prximo passo ser criar um !EPA9T!#O que listar os vendedores e seus
salrios, que sero compostos pelo salrio fixo (da tabela Vendedor), somados com a
comisso de 10% do valor de cada veculo (da tabela Veculos) vendido pelo vendedor.
Para iniciar, acione a guia Ferramentas de Banco de Dados e d um click no cone
"Relaes.
Na janela de Ralaes do Access crie um relacionamento entre os campos codvendedor
entre a tabelas Veiculos e Vendedor. No imponha integridade referencial.

D um click no boto "Tipo de associao... e em "Propriedades de associao, escolha
o item "#ncluir 9O7O$ os registros de U%endedorU e somente.... Click nos botes Ok
para fechar essas janelas.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:53
Agora estamos prontos para criar nosso relatrio. Volte janela de objetos, selecione a
guie "Criar e d um click no cone "Assistente de Relatrio. Vamos criar nosso relatrio
usando o assistente e posteriormente iremos personaliz-lo.
Crie o relatrio de nome Relat_Salrio, usando o assistente. Selecione a tabela
"vendedor e inclua os campos codvendedor, nome e salrio fixo.
Selecione agora a tabela "veiculos e inclua os campos modelo e valor.

D um Click no boto Avanar e na prxima tela escolha o agrupamento por
codvendedor. Click novamente em Avanar.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:54

Na prxima tela escolha o campo "valor como ordem de classificao e em "Opes de
resumo escolha Soma dos campos "valor.

Click novamente no boto Avanar, e na prxima janela escolha layout Bloco.
Na prxima janela escolha o estilo que gostar mais. Na ltima janela escolha um ttulo
sugestivo para o relatrio, como por exemplo "Relat_Salario.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:55

D um click no boto "Concluir para ver o relatrio criado:
Em seguida entraremos no modo de edio do relatrio para adequ-lo a nossas
necessidades. Para isso, d um click no relatrio com o boto direito do mouse e escolha
"Modo Design
Estando no modo de edio do relatrio, inclua uma caixa de texto, onde exibiremos o
valor do salrio do vendedor. Para isso, incluiremos a caixa de texto txtSalario na seo
"Rodap codvendedor.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:56
Para isso, selecione a caixa de texto, exiba a janela de propriedades, mude o nome da
caixa de texto para txtSalario, e o formato para Unidade monetria.
Pegue a guia Dados e configure o contedo dessa caixa de texto (Fonte de Controle [...])
de acordo com o seguinte:

Visualize o relatrio, que dever exibir o salrio fixo de cada vendedor, acrescido com a
comisso pela venda dos veculos, por ele vendidos. Se quiser format-lo de maneira
melhor, faa-o a seu gosto.
Obs.: Note que o relatrio est numa forma um tanto bagunada e no muito lgica para
consulta por um usurio. Deixe-o de uma forma mais fcil para consulta. Use seu bom
senso.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:57
Criao do segundo relat1rio.
Ainda atravs do assistente, crie agora o relatrio de nome Relat_Veiculos para exibio
dos dados da tabela "Veiculos. Os registros devero ser exibidos em ordem alfabtica
de modelo de veculo, com os agrupamentos (quebras com totais): A cada quebra de
modelo dever haver um subtotal de valor por modelo. Dentro de cada modelo dever
haver um sobtotal por ano de veculo, daquele modelo. Vide exemplo de relatrio abaixo:

Obs.: Se o relatrio no estiver adequado ao ser criado pelo assistente, d-lhe um click
com o boto direito do mouse e escolha "Modo Design. A voc pode configur-lo como
quizer.
Em seguida, crie um novo formulrio contendo dois botes para apresentar os relatrios.
Ao receber o click do mouse, cada boto exibe o relatrio correspondente criado no item
anterior. Utilize o "Assistente de boto de comando, com o grupo de "Operaes de
relatrio e a ao "Visualizar relatrio. Veja o figura a seguir:
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:58

Escolha o relatrio correspondente, coloque o nome adequado no boto,
conclua a configurao e teste o boto.
O formulrio deve ficar mais ou menos com a seguinte aparncia:

Faa um teste geral em seu sistema, que ser finalizado na prxima aula.
Apresente-o ao professor.
**********************************************************************************************
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:59
Aula V de Access.
Abra o arquivo Revenda para fazer os acertos finais. remos implementar algumas
melhorias no projeto, tais como no permitir o cadastramento de veculos em duplicidade
ou de vendedores com mesmo cdigo.
Para exemplificar isso, criaremos uma funo baseada no livro "Programando em
Microsoft Access com VBA, de Flvio Morgado, em conjunto com o formulrio abaixo. A
funo que utilizaremos consulta uma tabela de um banco de dados para verificar se um
registro est ou no presente.


Option Compare Database
Option Explicit
Function achaReg() As Boolean
Dim db As Database
Dim rs As Recordset
Dim strcriterio As String
Dim strmsg As String
Dim strtitle As String
Dim procurado As String
Set db = CurrentDb()
Set rs = db.OpenRecordset("veiculos", dbOpenDynaset)
procurado = nputBox("Digite o veculo desejado...")
strcriterio = "modelo like '" + procurado + "'"
rs.FindFirst strcriterio
Do While Not rs.NoMatch
strmsg = "modelo = " + rs!modelo
strtitle = "sucesso"
MsgBox strmsg, vbnformation, strtitle
rs.FindNext strcriterio
achaReg = True
rs.Close
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:60
Exit Function
Loop
f rs.NoMatch Then
strmsg = "registro nao encontrado"
strtitle = "fim do arquivo"
MsgBox strmsg, vbnformation, strtitle
achaReg = False
End f
rs.Close
End Function
Private Sub cmdTeste_Click()
f achaReg Then
MsgBox "Registro encontrado"
Else
MsgBox "Registro no encontrado"
End f
End Sub
EXERCCOS:
1-Faa a adequao da funo acima e use-a para que no seja possvel a incluso na
tabela "Veiculos, de registros de veculos de mesma placa.
2-Faa a mesma coisa para a tabela "Vendedores, para que no seja permitida a
incluso de vendedores com mesmo cdigo.
3-nclua mais um formulrio de nome frmPrincipal, que ser o formulrio pelo qual a
aplicao ir iniciar, quando abrirmos o arquivo "Revenda.
Esse formulrio dever ter 4 botes, sendo:
- o primeiro boto exibe na forma modal, o formulrio frmVeiculos
(nome=cmdExibeFrmVeiculos).
- o segundo boto exibe modal, o formulrio frmVendedor
(nome=cmdExibeFrmVendedor) - o terceiro boto exibe na forma modal o formulrio
frmExibeRelatorio.
- o quarto boto encerra o processamento (nome=cmdFim).
Obs.: Para exibir um formulrio na forma modal, voc deve configurar suas propriedades
como: guia Outra / Janela restrita / Sim

nclua nesse formulrio (propriedades: Formulrio / formato / magem) a figura
"Carrinho.jpg, que dever ficar mais ou menos assim:
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:61

4-Para finalizar, vamos configurar as condies de inicializao de nosso sistema. Para
isso, d um click no boto Access / Opes do Access / Banco de Dados Atual, e
configurar a janela apresentada de acordo com a figura a seguir.
Atribuir um nome ao aplicativo, incluir um cone no aplicativo, desligar todas as cai-as
de seleo, selecionar o formulrio a iniciar a execuo (frmPrincipal), dar um click no
boto Ok e salvar o arquivo Revenda.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:62

Feche todas as janelas, salve o arquivo e feche o Access. Abra o arquivo Revenda e note
que s possvel o acesso aos formulrios e ao relatrio que voc criou. O usurio no
tem acesso direto s tabelas e aos outros componentes do projeto.
Se voc quiser acessar as tabelas ou outros recursos do Access, ao abrir o arquivo,
pressione a tecla Shift e a mantenha pressionada enquanto o arquivo estiver abrindo.
4aa um teste !eral em seu sistema e verifi<ue se tudo funciona a
contento, antes de c'amar o professor para avaliao.
$al%e tudo e prepare@se para a apresentao final do pro'eto.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:63
P!OQE9O +#6AP 7A 7#$C#PP#6A
O pro.eto constitui;se na confeco de um sistema em ,ccess para
controlar as notas e faltas dos alunos da disciplina $r! Micro.
O sistema de%e ser encabeado por um formul5rio principal cu'o acesso se d5 atra%Bs de
uma sen2a* (ue o usu5rio pode tentar acertar por atB tr&s %e?es.
O sistema de%er5 ter os m1dulos APL6O e !EPA9T!#O$.
O m1dulo APL6O de%er5 ter as seguintes funcionalidades: #ncluso* Alterao e E-cluso.
O m1dulo !EPA9T!#O de%er5 e-ibir dois tipos de relat1rios: de notas e de faltas. 7e%e
2a%er duas possibilidades de relat1rio de nota: por ordem alfabBtica de aluno e por ordem
decrescente de nota.
7escrio sucinta sobre os itens solicitados acima:
NCLUSO: Solicita o nmero de matrcula do aluno, verifica o dgito de controle e verifica se o
aluno j existe no cadastro. Se no existir e se o dgito for correto, o aluno cadastrado.
ALTERAO: Solicita o nmero de matrcula, verifica o dgito e verifica se o aluno est no banco
de dados. Abre campos para modificao.
Obs.: deve haver dois tipos distintos de modificao: Dados Cadastrais e de notas. Quando
houver modificaes em notas deve gravar a data (do sistema) em que as notas foram
modificadas.
EXCLUSO: dem anterior, mais solicitao de confirmao da excluso;
RELATROS:
NOTAS Exibe todas as notas e o conceito de cada aluno, de acordo com o critrio de avaliao.
Deve exibir a nota numrica e o conceito. O Conceito deve ser calculado atravs de
uma funo.
FALTAS nforma o total de faltas e se o aluno est reprovado por faltas.
Capric2e nas funcionalidades e no %isualWWW.
Obs.: Aqui voc o analista que projeta e implementa o sistema e deve, ao mesmo tempo,
colocar-se no lugar do usurio. Faa um sistema intuitivo e amigvel, e que no possibilite ao
usurio cometer erros. Por exemplo, se um componente tal como um boto ou uma caixa de texto
no tiverem funo em determinada fase de funcionamento do sistema, ento eles no deveriam
estar l. Pense na possibilidade de desabilit-los ou torn-los invisveis, at que se precise deles.
Outro exemplo seria o usurio estar alterando os dados cadastrais de um aluno e ter disposio
o boto excluir. Seria um contra-senso.
A pre%iso de confeco deste pro'eto B de tr&s a (uatro semanas a e %ale de 4 a S4
pontos.
SUGESTO:
mportar o arquivo "Turma PrgMicro Noite.xls pelo Access e trabalhar esse arquivo.
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:64
$egundo informa)es do CE# (Centro de #nform5tica do CEE9EP$)* o c5lculo de d0gito de
controle B de acordo com o abai-o:
Rotina para clculo do dgito de verificao do nmero de matrcula dos alunos da FATEC-SP:


Public Function Checa_Matricula(txtMatricula)
Dim x As nteger, Soma As nteger, Dgito As nteger
For x = 1 To 7
f Not sNumeric(Mid(txtMatricula, x, 1)) Then
MsgBox "Matrcula contm caracter no numrico", VB_Question
x = 8
Exit Function
End f
Next x
Soma = 0
'************************************************************
' Soma com pesos 7,6,5,4,3,2,1 para cada algarismo da Matrcula
'************************************************************
For x = 1 To 6
Soma = Soma + (Val(Mid(txtMatricula, x, 1)) * (8 - x))
Next x
'***********************************************
' Obtem resto da diviso de Soma por 11
'***********************************************
Dgito = Soma Mod 11

f Dgito > 1 Then
Dgito = 11 - Dgito
End f
f Dgito <> Right(txtMatricula, 1) Then
MsgBox "Dgito de verificao diferente do informado.", VB_Question
End f
End Function


Obs.: =ote <ue o processo de clculo " o mesmo do m>dulo ?? por"m o n@mero de menor ordem "
multiplicado por ? e no por A , como no m"todo usual.
Exemplo: 0810698-2

0 8 1 0 6 9 8
x x x x x x x
7 6 5 4 3 2 1

0 + 48 + 5 + 0 + 18 + 18 + 8 = 97

97 / 11 = 8 resto 9 Neste caso dgito ser 11 - 9 = 2
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:65
CO8PPE8E69O F Alguns programas do pro'eto Access das aulas:
Programa associado ao e%ento clicC do boto cmdVender* do frmVeiculos (c= funo)
Private Sub cmdVender_Click()
Dim codigostr As String
Dim codigolido As Long
Dim codigo As Long
Dim digitolido As nteger

On Error GoTo ExibeErro:
codigostr = nputBox(" Digite o cdigo do vendedor: ", " V e n d a d e V e c u l o")

' verifica se foram digitados s numeros.

f Len(codigostr) > 10 Then
MsgBox "Cdigo com mais de 10 dgitos - redigite!"
Exit Sub
End f

f Not sNumeric(codigostr) Then
MsgBox "Nmero invlido! Digite apenas nmeros...", vbCritical, "ATENO"
Exit Sub
End f


codigolido = Val(codigostr) 'converte o codigo p/ numero
digitolido = codigolido Mod 10 'separa o digito lido
codigolido = nt(codigolido / 10) 'tira o digito do codigo - trunca

f digitolido = CalculaDC(codigolido) Then 'Chamada da funo VerificaDC
'o digito bateu...
codvendedor = Val(codigostr) ' codvendedor campo do BD

'A instruo abaixo salva o registro corrente - grava o codigo do vendedor.

DoCmd.RunCommand acCmdRefresh 'Grava registro corrente

MsgBox "Venda efetuada com sucesso!"
cmdVender.Caption = "Vendido"
cmdProximo.SetFocus
cmdVender.Enabled = False
Else ' No else, o digito no bateu...
MsgBox "Dgito no bate - redigite!", vbCritical, "A T E N O"
Exit Sub
End f
Exit Sub
ExibeErro:
MsgBox Error(Err)
End Sub
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:66
Programas Principais do formul5rio :frmVendedor;:
Private Sub cmdOk_Click()
DoCmd.RunCommand acCmdRefresh 'atualiza o banco de dados
txtcodvendedor.Enabled = False
txtNome.Enabled = False 'desabilita as caixas de texto
txtEndereco.Enabled = False
txtEstadoCivil.Enabled = False
txtSalarioFixo.Enabled = False

cmdnsereVendedor.Enabled = True 'habilita os botes
cmdProximo.Enabled = True
cmdAnterior.Enabled = True

End Sub
Private Sub Form_Load()
txtcodvendedor.Enabled = False
txtNome.Enabled = False
txtEndereco.Enabled = False
txtEstadoCivil.Enabled = False
txtSalarioFixo.Enabled = False
End Sub
Private Sub cmdnsereVendedor_Click()
'On Error GoTo Err_cmdnsereVendedor_Click
Dim novocodstr1 As String
Dim novocodstr2 As String
Dim novocodigo As Long
Dim digitocalc As nteger

novocodstr1 = nputBox("Digite o cdigo do vendedor:")

f Len(novocodstr1) > 9 Then 'Verifica se o codigo tem at 9 dgitos
MsgBox "O cdigo deve ter no mximo 9 nmeros", vbCritical, "A T E N O"
Exit Sub
End f

f Not sNumeric(novocodstr1) Then 'Verifica se s tem nmeros
MsgBox "Nmero invlido! Digite apenas nmeros...", vbCritical, "ATENO"
Exit Sub
End f
novocodstr2 = nputBox("R E D G T E o cdigo do vendedor para verificao...")
f novocodstr1 <> novocodstr2 Then
MsgBox "Codigo invlido... tente novamente!", vbCritical, "A T E N O"
Exit Sub
End f
novocodigo = Val(novocodstr1)
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:67
digitocalc = CalculaDC(novocodigo) 'calculo do dgito de controle p/ o novo cdigo
novocodigo = novocodigo * 10 + digitocalc 'incorpora o dc ao cdigo


DoCmd.GoToRecord , , acNewRec 'insere um registro novo

codvendedor = novocodigo
MsgBox "Digite os campos para cadastramento do vendedor e pressione o boto Ok!"
txtNome.Enabled = True
txtEndereco.Enabled = True
txtEstadoCivil.Enabled = True
txtSalarioFixo.Enabled = True

txtNome.SetFocus

cmdnsereVendedor.Enabled = False
cmdProximo.Enabled = False
cmdAnterior.Enabled = False

Exit Sub
Exit_cmdnsereVendedor_Click:
Exit Sub
Err_cmdnsereVendedor_Click:
MsgBox Err.Description
Resume Exit_cmdnsereVendedor_Click

End Sub
+uno Calcula7C
Function CalculaDC(novocodigo As Long) As nteger
Dim codigo As Long
Dim digito As nteger
Dim soma As nteger
Dim mult As nteger

codigo = novocodigo
mult = 2
soma = 0


While codigo > 0
soma = soma + (codigo Mod 10) * mult
mult = mult + 1
codigo = nt(codigo / 10)
Wend

digito = soma Mod 11
f digito > 1 Then digito = 11 - digito

CalculaDC = digito 'Retorna o valor do digito calculado

End Function
Disciplina: Programao em microinformtica , VBA com Word / Excel / Access pg#:68
Bibliografia
MORGADO, Flvio. Programando em Microsoft Access com VBA, Rio de Janeiro, Cincia
Moderna, 2003.