Ig mais exercicios explicados vba 2010-2011
Caderno 4, Ficha 2 – Offset Exercício extra
Enunciado:
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
INFORMÁTICA DE GESTÃO
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. ActiveCell.Offset (0, 1) = x
X
“Penélope”
O único efeito que se pretende para a macro é que troque os conteúdos das células.
(cont.)
DEPARTAMENTO DE CIÊNCIAS E TECNOLOGIAS DA INFORMAÇÃO 2
INFORMÁTICA DE GESTÃO
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é