Pontifícia Universidade Católica de Goiás Departamento de Engenharia Curso de Graduação em...
Preview:
Citation preview
- Slide 1
- Pontifcia Universidade Catlica de Gois Departamento de
Engenharia Curso de Graduao em Engenharia de Produo ENG 1004
Linguagem de Programao para Eng de Produo Prof. Ricardo Rezende,
D.S. VBA Estruturas de Controle Fonte: Adaptado de Excel Avanado,
Antnio Cinto e Wilson Ges, 2005
- Slide 2
- 1. Estruturas de controle O VBA disponibiliza algumas
estruturas de controle que podem ser utilizadas para controlar o
decurso da execuo da rotina Essas estruturas do ao programador
enorme poder para construir rotinas bastante complexas e flexveis
Algumas estruturas a serem estudadas: If Then ElseFor Next While
WendDo Loop Select CaseFor Each Next 2
- Slide 3
- 2. If Then Else Corresponde funo SE do Excel: =SE( ; ; ) A
estrutura IF do VBA tem o mesmo tipo de funcionamento, o que difere
a sintaxe: If Then Else End If 3
- Slide 4
- 2. If Then Else exemplo 1 Escrever a funo SituacaoAluno no VBA
(nota: a pasta Mdulos deve estar visvel na Janela Project Explorer;
caso contrrio, clique em Inserir/Mdulo) Public Function
SituacaoAluno (nota) If nota >= 5 Then SituacaoAluno = Aprovado
Else SituacaoAluno = Reprovado End If End Function Para testar a
funo, retorne ao Excel, selecione uma clula, digite
=SituacaoAluno(5) e tecle Enter 4
- Slide 5
- 2. If Then Else exemplo 1 5
- Slide 6
- 2. If Then Else exemplo 2 (ElseIf) Vamos agora acrescentar uma
instruo que prope uma condio alternativa; altere a funo
SituacaoAluno conforme o cdigo a seguir: Public Function
SituacaoAluno (nota) If nota >= 5 Then SituacaoAluno = Aprovado
ElseIf nota >= 3 Then SituacaoAluno = Recuperao Else
SituacaoAluno = Reprovado End If End Function 6
- Slide 7
- 2. If Then Else exemplo 2 (ElseIf) 7
- Slide 8
- 3. For Next Permite a execuo de uma tarefa durante um
determinado n de vezes; sintaxe: For To [Step ] Next Exemplo 3
Vamos criar uma funo para o clculo de potncias; essa funo dever
receber como parmetros a base e o expoente; ento dever calcular e
retornar o valor da potncia Escreva sua funo como no cdigo a seguir
8
- Slide 9
- 3. For Next exemplo 3 Public Function CalcularPotencia (Base,
Expoente) Dim Contador As Integer Dim Potencia As Integer Potencia
= 1 For Contador = 1 to Expoente Step 1 Potencia = Potencia * Base
Next CalcularPotencia = Potencia End Function 9
- Slide 10
- 3. For Next exemplo 3 Entendendo a funo: Para o contador
variando de 1 at o valor do expoente, a cada passagem o contador
incrementado em 1, e a potncia multiplicada pela base A instruo For
Next tem como funo calcular a potncia Para testar a funo, retorne
ao Excel, selecione uma clula, digite =CalcularPotencia(5;3) e
tecle Enter; a planilha dever estar parecida com a da figura
seguinte 10
- Slide 11
- 3. For Next exemplo 3 11
- Slide 12
- 4. While Wend Apresenta funcionamento similar a For Next,
realizando looping um determinado n de vezes; sintaxe: While Wend
Exemplo 4 Vamos refazer o exerccio anterior utilizado While Wend
Reescreva sua funo como no cdigo a seguir 12
- Slide 13
- 4. While Wend exemplo 4 Public Function CalcularPotencia (Base,
Expoente) Dim Contador As Integer Dim Potencia As Integer Potencia
= 1 Contador = 1 While Contador
- 5. Do Loop exemplo 8 Public Function CalcularPotencia (Base,
Expoente) Dim Contador As Integer Dim Potencia As Integer Potencia
= 1 Contador = 1 Do Potencia = Potencia * Base Contador = Contador
+ 1 Loop Until Contador > Expoente CalcularPotencia = Potencia
End Function 19
- Slide 20
- 5. Do Loop exemplo 9 Public Function CalcularPotencia (Base,
Expoente) Dim Contador As Integer Dim Potencia As Integer Potencia
= 1 Contador = 1 Do Potencia = Potencia * Base Contador = Contador
+ 1 If Contador > Expoente Then Exit Do End If Loop
CalcularPotencia = Potencia End Function 20
- Slide 21
- 6. Select Case Executa um dos diversos grupos de instrues,
dependendo do valor de uma expresso; sintaxe: Select Case expresso
Case lista de expresso Case Else End Select Exemplo 10 escrever uma
funo que, passando a uma determinada idade, ela retorne a faixa
etria, conforme o cdigo a seguir 21
- Slide 22
- 6. Select Case exemplo 10 Public Function FaixaEtaria (Idade)
Select Case Idade Case 0 To 3 FaixaEtaria = Beb Case 4 To 12
FaixaEtaria = Criana Case 13 To 17 FaixaEtaria = Adolescente Case
18 To 25 FaixaEtaria = Jovem Case 26 To 65 FaixaEtaria = Adulto
Case Else FaixaEtaria = Idoso End Select End Function 22
- Slide 23
- 6. Select Case exemplo 10 23
- Slide 24
- 7. For Each Next Repete instrues para cada elemento em um grupo
de objetos; sintaxe: For Each elemento In grupo Next [elemento]
Exemplo 11 escrever uma macro que formate as clulas selecionadas
onde, se 1 linha e 1 coluna: cor da fonte vermelho e cor de
preenchimento cinza c/ negrito; demais clulas: cor da fonte preto e
cor de preenchimento branco s/ negrito; aplicar borda simples em
todo o intervalo 24
- Slide 25
- 7. For Each Next exemplo 11 Public Sub FormatarCelulas () Dim
celula As Range For Each celula In ActiveWindow.RangeSelection
celula.Font.ColorIndex = 1 If (celula.Column = 1) Or (celula.Row =
1) Then celula.Interior.ColorIndex = 15 celula.Font.Bold = True
celula.Font.ColorIndex = 3 Else celula.Interior.ColorIndex = 0
celula.Font.Bold = False celula.Font.ColorIndex = 1 End If
celula.Borders.ColorIndex = 1 Next End Sub 25
- Slide 26
- 7. For Each Next exemplo 11 Entendendo a funo: Verifica-se se a
clula est na 1 linha ou na 1 coluna e, se estiver, aplica-se cor da
fonte vermelho, preenchimento em cinza e negrito; se no, aplica-se
cor da fonte preto, preenchimento em branco e sem negrito; ento,
aplica-se borda simples Para testar FormatarCelulas, retorne ao
Excel e selecione um intervalo de clulas; volte ao Microsoft Visual
Basic e pressione a tecla F5; a planilha deve aparecer como a da
figura a seguir 26
- Slide 27
- 7. For Each Next exemplo 11 27