INFORMÁTICA DE GESTÃO

Documentos relacionados
Grupo I. 1 - Range("cell")

Informática de Gestão 1º ano / 1º semestre Ano letivo: 2014/2015. Visual Basic VBA

Exercícios Data Modeling

Tutorial de Extensibilidade

Bertolo Por que Laços no VBA?

Excel 2016 com VBA. Aula 5. Prof. Guilherme Nonino Rosa

Resolução De Problemas Em Informática. Docente: Ana Paula Afonso Resolução de Problemas. 1. Analisar o problema

Objectivos. Introdução à programação Macros em Microsoft Excel Introdução ao Visual Basic para Aplicações (VBA)

Estruturas de Decisão Embutidas. APROG (Civil) Aula 7

Um algoritmo deve conter passos não ambíguos, executáveis e que sejam terminados quando seguidos.

APROG Civil. Estruturas de Decisão. Angelo Martins Dep. Eng. Informática - ISEP. Aula 2. ISEP DEI, Angelo Martins 2006 ISEP-DEI, António Silva, 2007

INSTITUTO SUPERIOR DE ENGENHARIA DO PORTO

Variáveis indexadas Vectores e Matrizes. APROG (Civil) Aula 12

Estruturas de Decisão. APROG (Civil) Aula 6

Módulo 1a: Introdução ao Visual Basic for Applications (VBA)

Exercícios de VBA. Paulo Melo Joana Dias Óscar Lourenço 17 de Maio de 2006

Informática II Ficha 4_resolução

Lista 2 TP060. Exercícios Vetores

1) Mostrando uma mensagem. 10 exemplos de macros essenciais no Excel. Este conteúdo faz parte da série: Excel VBA Ver 6 posts dessa série

A1;A7 é o mesmo que A1 e A7 A1:A7 é o mesmo que A1 até A7 (abrange A1, A2, A3, A4, A5, A6, A7).

Excel - VBA. Macrocomandos (Macros) O que é uma macro? São programas que executam

Programação de Computadores usando VBA

Tipos de Referência. Referência Relativa $A$1. Referência Absoluta. Referência Mista. $A1 ou A$1

DESENVOLVIMENTO DE SOFTWARE

Excel. Aula Prática n o 6 VBA. 1. Inicie o Microsoft Excel e abra o ficheiro "Excel_6" que se encontra no directório APROG.

Microsoft Excel Macro V. Índice 16-) Formulários ) Gerando código para o Formulário... 49

Variáveis Tipos de Dados

Visual Basic for Applications

Objectos, Propriedades e Métodos

Trabalho final Formulário com VBA

Tutorial 2 Básico do VBA do Excel

Neste exercício, vamos criar uma Folha de Cálculo, onde vamos utilizar alguns Controlos de Formulários.

Primeiramente lemos a seguinte citação, copiada de Excel-Ajuda:

Linguagem Computacional. Estruturas de Controle: Estruturas de Repetição. Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves

Variáveis Tipos de Dados. APROG (Civil) Aula 2

EISnt Centro de Formação em Tecnologia

Resumão VB (com Excel Avançado) Autor: Everton M. Messias

Informática II Ficha 5_resolução

Estruturas de Controlo Repetitivo. APROG (Civil) Aula 8

Linguagem de Programação II. Introdução à programação em VB Professor: Armando Hage

Usando Macros no. Excel

Modelagem em Engenharia C & A Aula 1- Introdução e informações

Para ver alguma coisa acontecer talvez seja preciso, primeiro, apagar o conteúdo da célula B2.

Para iniciarmos o trabalho se faz necessária a implantação da GUIA DESENVOLVEDOR. Botão Direito do Mouse; Personalizar Faixa de Opções

Sumário. Ciência da Computação. Prof. Dr. Leandro Alves Neves. Aula 10. Algoritmos e Programação. Enquanto (Teste no início) Repeat (Teste no final)

Aula de hoje. Comandos. Comandos simples. Comandos. Comandos de controle. Bloco de comandos. SCC Introdução à Programação para Engenharias

Manipulando Strings no VBA (Replace, Mid e InStr)

Manipulando Strings no VBA (Replace, Mid e InStr)

Avançado. Visão geral do ambiente do VBA Retornar à planilha Excel

Informática II Cap. 4-4

VISUAL BASIC PARA APLICAÇÕES (VBA)

Avançado. Visão geral do ambiente do VBA Retornar à planilha Excel

BARRA DE PROGRESSO EM VBA

5. NOÇÕES DE PROGRAMAÇÃO

PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO 11ºANO

CÓDIGO FONTE CALCULADOR DE 04 OPERAÇÕES

Fundamentos Programação

Refinamentos sucessivos

Procedimento. Função. Selecção Condicional - a instrução if-then-else. expressão if lógica then instrução else instrução

Informática Básica. Aula 13 Macros e introdução a programação

Linguagem de programação: Pascal

PROGRAMAÇÃO PARA DESIGNERS - PENSAR COMO O INIMIGO

4 Criação de macros e introdução à linguagem VBA

Visual Basic for Applications: # 1

Excel Avançado. Antonio Fernando Cinto Wilson Moraes Góes. Novatec Editora

Informática para Ciências e Engenharias 2013/14. Teórica 7

Reconhecer alguns dos objectos VBA Automatizar bases de dados recorrendo à programação VBA e scripts SQL

AULA 2: INTRODUÇÃO A PYTHON. Luís Feliphe Silva Costa

Introdução à Programação 2006/07. Algoritmos

Variáveis Escalar e de Array

Transcrição:

Enunciado: Caderno 4, Ficha 2 Offset Exercício extra Escreva uma macro que troca o conteúdo da célula activa com o valor da célula à sua direita. Exº: Antes de correr a macro: Resolução: Instrução para passar o conteúdo da célula activa para a célula à sua direita: ActiveCell.Offset (0, 1) = ActiveCell Instrução para passar o conteúdo da célula à direita para a célula activa: ActiveCell = ActiveCell.Offset (0, 1) No entanto, depois da primeira instrução ser executada, perde-se o conteúdo da célula activa e vice-versa: Depois de correr a macro: Inferimos que: antes de efectuar a primeira cópia de valores, precisamos de salvaguardar algures o conteúdo da célula activa. (continua) DEPARTAMENTO DE CIÊNCIAS E TECNOLOGIAS DA INFORMAÇÃO 1

Caderno 4, Ficha 2 Offset - Exercício extra Resolução (Cont.): Se quiséssemos fazer esta operação manualmente, usaríamos uma célula auxiliar (por exemplo, B1): Solução: em vez de guardarmos numa célula, guardamos numa variável em VB. Dim x As Variant Como não sabemos de que tipo (texto, número, etc.) é o conteúdo da célula, declaramos a variável como Variant x = ActiveCell X X Penélope ActiveCell = ActiveCell.Offset (0, 1) Podemos implementar esta estratégia em VB. No entanto, coloca-se o problema de não sabermos se a célula auxiliar (neste caso, B1) possui algum conteúdo o qual se perderia. O único efeito que se pretende para a macro é que troque os conteúdos das células. ActiveCell.Offset (0, 1) = x X Penélope (cont.) DEPARTAMENTO DE CIÊNCIAS E TECNOLOGIAS DA INFORMAÇÃO 2

Caderno 4, Ficha 2 Offset - Exercício extra Resolução (Cont.): Conclusões Podemos pensar nas variáveis como se fossem células, nas quais podemos guardar valores temporariamente; As variáveis desaparecem assim que termina a macro a que pertencem O que neste caso até se revela ainda mais vantajoso relativamente a usar uma célula para armazenamento temporário: a célula teríamos que a apagar; a variável não. Solução: Sub Trocar_celulas () Dim x As Variant x = ActiveCell ActiveCell = ActiveCell.Offset (0, 1) ActiveCell.Offset (0, 1) = x DEPARTAMENTO DE CIÊNCIAS E TECNOLOGIAS DA INFORMAÇÃO 3

Caderno 4, Ficha 3 Procura - Exercício 1 Enunciado: Escreva uma macro que solicita um número ao utilizador e depois posiciona o Excel automaticamente na primeira célula da coluna A, a partir da célula A2, que contenha o dito número. Macro solicita um número: Utilizador escreve número e carrega em Ok: A célula activa posiciona-se na célula da coluna A onde se encontra esse número: DEPARTAMENTO DE CIÊNCIAS E TECNOLOGIAS DA INFORMAÇÃO 4

Caderno 4, Ficha 3 Procura - Exercício 1 Resolução: Como faríamos nós para nos posicionarmos a olho na célula que possuísse o número procurado? 1. Olhávamos para a célula A2 2. Se o valor nessa célula não fosse igual ao número que procurávamos, olhávamos para a célula imediatamente por baixo 3. Repetíamos o passo anterior até que a célula para onde estávamos a olhar possuísse o dito número 4. Então activaríamos essa célula onde tínhamos parado Ora, vamos dar instruções em VB para o Excel fazer exactamente como nós; Em VB: Precisamos de uma variável para memorizar em cada momento a célula para a qual se está a olhar : Dim c As Range Ao indicarmos que a variável é do tipo Range, indicamos que serve para guardar valores que representam células c Indicamos que a primeira célula a inspeccionar é a célula A2: Set c = Range ( A2 ) c DEPARTAMENTO DE CIÊNCIAS E TECNOLOGIAS DA INFORMAÇÃO 5

Caderno 4, Ficha 3 Procura - Exercício 1 Continuação: Se a célula indicada por c não possuir o número que procuramos, i.é, se: c.value <> num...indicamos que a nova célula a inspeccionar é a que está imediatamente a baixo a variável c deverá passar a referir a célula que está por baixo: Set c = c.offset (1, 0) Para repetir a instrução anterior enquanto c não estiver a referir uma célula com o número procurado: Do While c.value <> num Set c = c.offset (1, 0) Loop c c.offset(1,0) c c.offset(1,0) c... num 24555 c.value < > num? TRUE c.value < > num? TRUE c.value < > num? FALSE DEPARTAMENTO DE CIÊNCIAS E TECNOLOGIAS DA INFORMAÇÃO 6

Exercício Extra 1 Parte 1 Fazer uma macro que preenche a célula G3 com Passou ou com Chumbou O/a aluno/a só terá passado se tiver nota de avaliação contínua igual ou superior a 10......e simultaneamente se a nota da frequência for igual ou superior a 7,5 (a nota mínima) Não considere ainda a existência de nota de exame. DEPARTAMENTO DE CIÊNCIAS E TECNOLOGIAS DA INFORMAÇÃO 7

Exercício Extra 1 Parte 1 Sub Passou_chumbou () IF Range( E3 ) >= 10 AND Range ( D3 ) >= 7.5 THEN Range( G3 ) = Passou ELSE Range( G3 ) = Chumbou END IF DEPARTAMENTO DE CIÊNCIAS E TECNOLOGIAS DA INFORMAÇÃO 8

Exercício Extra 1 Parte 2 Considere agora também a nota de exame. Mesmo que o/a aluno/a não tenha obtido aprovação na avaliação contínua, se tiver nota de exame igual ou superior a 9,5 obtém aprovação DEPARTAMENTO DE CIÊNCIAS E TECNOLOGIAS DA INFORMAÇÃO 9

Exercício Extra 1 Parte 2 Sub Passou_chumbou () IF Range( E1 ) >= 10 AND Range( D1 ) >= 7.5 OR Range( F1 ) >= 10 THEN Range( G1 ) = Passou ELSE Range( G1 ) = Chumbou END IF DEPARTAMENTO DE CIÊNCIAS E TECNOLOGIAS DA INFORMAÇÃO 10

Exercício Extra 1 Parte 3 Transformar a macro anterior numa função Comece por definir que parâmetros serão necessários para esta função Usar essa função em toda a coluna G, referente a outros alunos DEPARTAMENTO DE CIÊNCIAS E TECNOLOGIAS DA INFORMAÇÃO 11

Exercício Extra 1 Parte 3 Function Passou_chumbou (nota_cont, nota_freq, nota_exame) IF nota_cont >= 10 AND nota_freq >= 7.5 OR nota_exame >= 10 THEN Passou_chumbou = Passou ELSE Passou_chumbou = Chumbou END IF DEPARTAMENTO DE CIÊNCIAS E TECNOLOGIAS DA INFORMAÇÃO 12

Exercício Extra - Do While Preencha as células A2:A10 com números, escrevendo um programa que lê um número e posiciona a célula activa no número lido. Public Sub exercicio() Dim num As Integer num = InputBox( Introduza o numero: ") Dim c As Range Set c = Range("A2") Do While c.value <> num Set c = c.offset(1, 0) Loop c.activate DEPARTAMENTO DE CIÊNCIAS E TECNOLOGIAS DA INFORMAÇÃO 13

Exercício Extra - Indexação Mostra o conteúdo das 3 células abaixo da célula activa. Public Sub exemplo_indexacao() Dim i As Integer For i = 1 To 3 MsgBox ActiveCell.Offset(i, 0) Next i DEPARTAMENTO DE CIÊNCIAS E TECNOLOGIAS DA INFORMAÇÃO 14

Exercício Extra Célula Activa Ler um número; inseri-lo na célula activa (se for maior do que o que lá está). Public Sub celula_activa() Dim value As Integer Value = InputBox ("escreva um numero inteiro:") If value> ActiveCell.value Then ActiveCell.value = value End If DEPARTAMENTO DE CIÊNCIAS E TECNOLOGIAS DA INFORMAÇÃO 15

Exercício Extra If Mostrar numa janela (MsgBox) o primeiro número par maior ou igual a B1. Exemplo: Se B1 contém 12 mostrar 12; se B1 contém 13 mostrar 14, etc. Public Sub mostra_par() Dim val As Integer val = Range( B1").value If val Mod 2 = 0 Then MsgBox val Else MsgBox val + 1 End If DEPARTAMENTO DE CIÊNCIAS E TECNOLOGIAS DA INFORMAÇÃO 16

Exercício Extra If Acertar no conteúdo das células K1 ou K2. Public Sub acertar() Dim S S = InputBox( Escreva qualquer coisa: ) If S = Range( K1 ) Or S = Range( K2 ) Then MsgBox ( Acertou! ) Else MsgBox ( Errou! ) End If DEPARTAMENTO DE CIÊNCIAS E TECNOLOGIAS DA INFORMAÇÃO 17

Exercício Extra If Acertar no conteúdo das células K1 ou K2, mas modificar a subrotina: em vez de usar OR usar AND e NOT. Public Sub acertar() Dim S S = InputBox( Escreva qualquer coisa: ) If Not (S <> Range( K1").value And S <> Range("K2").value) Then MsgBox ("Acertou!") Else MsgBox ( Errou! ) End If DEPARTAMENTO DE CIÊNCIAS E TECNOLOGIAS DA INFORMAÇÃO 18

Exercício Extra If Faça uma subrotina que insira o número seguinte na célula de cima da célula activa: se a célula de cima estiver vazia insere 1; se a célula de cima contiver um número insere o número seguinte; senão, envia uma mensagem (MsgBox) a dizer que não pode fazer nada. Public Sub numero_seguinte() If ActiveCell.Offset(-1, 0).value = "" Then ActiveCell.value= 1 ElseIf IsNumeric(ActiveCell.Offset(-1, 0)) Then ActiveCell.value= ActiveCell.Offset(-1, 0).value + 1 Else MsgBox( Não posso fazer nada!") End If DEPARTAMENTO DE CIÊNCIAS E TECNOLOGIAS DA INFORMAÇÃO 19