A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

1 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 Engª de Produção Prof. Ricardo Rezende, D.S. VBA – Estruturas de Controle Fonte: Adaptado de Excel Avançado, Antônio Cinto e Wilson Góes, 2005

2 1. Estruturas de controle O VBA disponibiliza algumas estruturas de controle que podem ser utilizadas para controlar o decurso da execução da rotina Essas estruturas dão ao programador enorme poder para construir rotinas bastante complexas e flexíveis Algumas estruturas a serem estudadas: If Then ElseFor Next While WendDo Loop Select CaseFor Each Next 2

3 2. If Then Else Corresponde à função 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

4 2. If Then Else – exemplo 1 Escrever a função SituacaoAluno no VBA (nota: a pasta Módulos deve estar visível na Janela Project Explorer; caso contrário, clique em Inserir/Módulo) Public Function SituacaoAluno (nota) If nota >= 5 Then SituacaoAluno = “Aprovado” Else SituacaoAluno = “Reprovado” End If End Function Para testar a função, retorne ao Excel, selecione uma célula, digite =SituacaoAluno(5) e tecle Enter 4

5 2. If Then Else – exemplo 1 5

6 2. If Then Else – exemplo 2 (ElseIf) Vamos agora acrescentar uma instrução que propõe uma condição alternativa; altere a função SituacaoAluno conforme o código a seguir: Public Function SituacaoAluno (nota) If nota >= 5 Then SituacaoAluno = “Aprovado” ElseIf nota >= 3 Then SituacaoAluno = “Recuperação” Else SituacaoAluno = “Reprovado” End If End Function 6

7 2. If Then Else – exemplo 2 (ElseIf) 7

8 3. For Next Permite a execução de uma tarefa durante um determinado nº de vezes; sintaxe: For To [Step ] Next Exemplo 3 Vamos criar uma função para o cálculo de potências; essa função deverá receber como parâmetros a base e o expoente; então deverá calcular e retornar o valor da potência Escreva sua função como no código a seguir 8

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

10 3. For Next – exemplo 3 Entendendo a função: Para o contador variando de 1 até o valor do expoente, a cada passagem o contador é incrementado em 1, e a potência multiplicada pela base A instrução For Next tem como função calcular a potência Para testar a função, retorne ao Excel, selecione uma célula, digite =CalcularPotencia(5;3) e tecle Enter; a planilha deverá estar parecida com a da figura seguinte 10

11 3. For Next – exemplo 3 11

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 exercício anterior utilizado While Wend Reescreva sua função como no código a seguir 12

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 <= Expoente Potencia = Potencia * Base Contador = Contador + 1 Wend CalcularPotencia = Potencia End Function 13

14 4. While Wend – exemplo 4 Entendendo a função: Foram criadas 2 variáveis: Contador e Potência As variáveis iniciam com valor 1 O ciclo de repetições tem início e, enquanto contador for  expoente, a potência é multiplicada pela base e o contador é incrementado Nota: se o contador não fosse incrementado, o ciclo seria infinito pois o expoente nunca seria maior que o contador A planilha deverá estar parecida com a da figura do slide 11 14

15 5. Do Loop Repete um bloco de instruções enquanto uma condição é verdadeira ou até que se torne verdadeira; sintaxe: Do [{While  Until} Condição] [Exit Do] Loop Ou pode-se usar a sintaxe a seguir: Do [Exit Do] Loop [{While  Until} Condição] 15

16 5. Do Loop – exemplo 5 Public Function CalcularPotencia (Base, Expoente) Dim Contador As Integer Dim Potencia As Integer Potencia = 1 Contador = 1 Do While Contador <= Expoente Potencia = Potencia * Base Contador = Contador + 1 Loop CalcularPotencia = Potencia End Function 16

17 5. Do Loop – exemplo 6 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 While Contador <= Expoente CalcularPotencia = Potencia End Function 17

18 5. Do Loop – exemplo 7 Public Function CalcularPotencia (Base, Expoente) Dim Contador As Integer Dim Potencia As Integer Potencia = 1 Contador = 1 Do Until Contador > Expoente Potencia = Potencia * Base Contador = Contador + 1 Loop CalcularPotencia = Potencia End Function 18

19 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

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

21 6. Select Case Executa um dos diversos grupos de instruções, dependendo do valor de uma expressão; sintaxe: Select Case expressão Case lista de expressão Case Else End Select Exemplo 10 – escrever uma função que, passando a uma determinada idade, ela retorne a faixa etária, conforme o código a seguir 21

22 6. Select Case – exemplo 10 Public Function FaixaEtaria (Idade) Select Case Idade Case 0 To 3 FaixaEtaria = “Bebê” Case 4 To 12 FaixaEtaria = “Criança” 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

23 6. Select Case – exemplo 10 23

24 7. For Each Next Repete instruções para cada elemento em um grupo de objetos; sintaxe: For Each elemento In grupo Next [elemento] Exemplo 11 – escrever uma macro que formate as células selecionadas onde, se 1ª linha e 1ª coluna: cor da fonte vermelho e cor de preenchimento cinza c/ negrito; demais células: cor da fonte preto e cor de preenchimento branco s/ negrito; aplicar borda simples em todo o intervalo 24

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

26 7. For Each Next – exemplo 11 Entendendo a função: Verifica-se se a célula está na 1ª linha ou na 1ª coluna e, se estiver, aplica-se cor da fonte vermelho, preenchimento em cinza e negrito; se não, aplica-se cor da fonte preto, preenchimento em branco e sem negrito; então, aplica-se borda simples Para testar FormatarCelulas, retorne ao Excel e selecione um intervalo de células; volte ao Microsoft Visual Basic e pressione a tecla F5; a planilha deve aparecer como a da figura a seguir 26

27 7. For Each Next – exemplo 11 27


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google