Click here to load reader

Pontifícia Universidade Católica de Goiás Departamento de Engenharia Curso de Graduação em Engenharia de Produção ENG 1004 – Linguagem de Programação para

Embed Size (px)

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