Vbasic
Vbasic
Introdução
Os computadores guardam a informação (dados) em memória. O elemento básico de memória é o byte
(conjunto de 8 bits, cada bit pode tomar o valor 1 ou 0). Com um byte podemos ter combinações de bits que
vão de 0000 0000 (decimal 0) a 1111 1111 (decimal 255), dando um total de 256 combinações (com 8 bits
temos 28 = 256 combinações). A única coisa que podemos ter em memória são números (com um byte podemos
ter números inteiros de 0 a 255).
Como podemos então guardar em memória informação que não é numérica? A resposta é simples, guardamos
um número inteiro que representa (codifica) essa informação. Por exemplo se tivermos um total de 256 cores e
quisermos usar um byte para guardar o valor da cor, codificamos as cores (0 – branco, 1 – preto, 2 – amarelo...).
Não guardamos a cor em si mas apenas um número que a representa. O mesmo se passa com as letras do
alfabeto, os computadores não guardam letras apenas um número que as representa.
Em memória só temos números. A informação não é mais do que a maneira como esses números são
interpretados.
I - Tipos de Dados
O tipo é uma classe bem definida que representa informação com as mesmas características.
Essas características são fundamentalmente :
- O conjunto de valores que essa informação pode tomar
- As operações que podem ser feitas sobre esses valores
Numa linguagem de programação, a informação está contida em variáveis. As variáveis terão um tipo
associado, conforme as características da informação nelas guardadas. Dizemos por exemplo que uma variável é
do tipo inteiro, quando nela podem ser guardados valores com as características dos números inteiros.
Os tipos podem ser divididos em dois grandes grupos :
Tipos elementares
Representam informação que já está na forma mais simples. Informação que não pode ser decomposta
em informação mais simples.
Tipos estruturados
Representam informação que ainda pode ser decomposta em informação mais simples que por sua vez,
ainda pode ser elementar ou estruturada
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 1/28
1 - Os tipos elementares
1.1 O tipo integer
Uma variável do tipo integer pode guardar números inteiros entre –32768 e 32767
Como se chegou a estes valores?
O VB usa dois bytes para guardar números inteiros. Temos pois um total de 16 bits que dão combinações desde
00000000 00000000 (decimal 0) a 11111111 11111111 (decimal 65535 --»»216 -1). Os números inteiros
também podem tomar valores negativos, pelo que foi necessário arranjar uma maneira de representar esses
valores. Os computadores usam um dos bits do número (o bit mais à esquerda – maior peso) para diferenciar
números inteiros positivos de negativos. Se esse bit é 0 é um inteiro positivo, se é 1 é um inteiro negativo.
Assim o maior inteiro positivo será 0111 1111 1111 1111 (primeiro bit tem que ser 0 para o número ser
positivo). Este número é o inteiro 32767. Se a este número somarmos 1 teriamos 1000 0000 0000 0000 (decimal
32768). No entanto como o primeiro bit do número é 1, o número é por convenção negativo. Temos pois o
inteiro negativo –32768.
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 2/28
Exemplo de declaração de uma variável do tipo integer e atribuição de um valor a essa variável
DIM x as integer
X = 112
Exemplo de declaração de uma variável do tipo long e atribuição de um valor a essa variável
DIM x as long
X = 342279
Exemplo de declaração de uma variável do tipo single e atribuição de um valor a essa variável
DIM r as single
R = 32.725
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 3/28
Algumas funções predefinidas em VB e que devolvem doubles ou singles
Exemplo de declaração de uma variável do tipo double e atribuição de um valor a essa variável
DIM r as double
R = 32.7E100
AND conjunção
OR disjunção
NOT negação
XOR exclusão
Nota: os operadores AND, OR e XOR também efectuam operações bit a bit em duas expressões numéricas e
afectam o bit correspondente no resultado de acordo com a seguinte tabela:
O operador NOT inverte os valores dos bits de uma expressão numérica e afecta os bits correspondentes do
resultado de acordo
2 – Os tipos estruturados
2.1 strings
Uma variável do tipo string pode guardar um ou mais caracteres. É o tipo ideal para guardar texto. Os valores
são guardados entre aspas.
Há dois tipos de strings em VB :
strings de comprimento variável ( O comprimento é ajustado automaticamente quando o texto aumenta ou
diminui)
strings de comprimento fixo. (o número de caracteres é fixo e predeterminado)
Exemplo de declarações ilustrativas dos dois casos :
DIM nome as string / comprimento variável
DIM codigo as string*6 / string com 6 chars comprimento fixo
Concatenação de strings
Em VB o operador de concatenação é representado pelo símbolo &
Exemplo de aplicação:
DIM nome1 as string ,nome2 as string,nome3 as string
Nome1=”José “
Nome2=” Martins”
Nome3 = nome1 & nome2 / nome3 fica com o valor “José Martins”
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 5/28
Algumas funções predefinidas em VB para manipulação de strings
Sintaxe Devolve Exemplo Devolve
Str(numero) string correspondente a numero Str(123) “ 123”
Len(string) Integer correspondente ao número de Len(“CATOLICA”) 8
caracteres de string
Mid(string, ini[, comp]) Uma parcela de string começando no Mid(“CATOLICA”,3,2) “TO”
caracter de posição ini e comp
caracteres a partir daí Mid(“CATOLICA”,3) “TOLICA”
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 6/28
Exemplo de atribuição de valores aos elementos:
V(1) = 7 / atribuição do valor 7 ao primeiro elemento
V(2) = 4
V(3) = 3
V(4) = 9
1 2 3 4
V 7 4 3 9
Nos arrays multidimensionais cada elemento é identificado referindo qual a posição do elemento em cada uma
das dimensões. O número total de elementos é obtido por multiplicação do número de elementos de cada uma
das dimensões.
Por exemplo para declarar um array de duas dimensões representando uma matriz de 3 x 4
Dim m(1 to 3, 1 to 4) as integer / array de 12 elementos(3 x 4)
Podemos então considerar que o array representa 12 variáveis inteiras, que podem ser referenciadas pelos seguintes nomes :
M(1,1) M(1,2) M(1,3) M(1,4)
M(2,1) M(2,2) M(2,3) M(2,4)
M(3,1) M(3,2) M(3,3) M(3,4)
M
1 2 3 4
1
2
3
2.3 Registos
O registo permite representar só com um identificador(nome) vários elementos, mesmo que eles sejam de tipo
diferente. Em VB é necessário criar primeiro um tipo definido pelo utilizador e depois criar variáveis desse tipo.
Vamos supor a criação de um registo que represente informação sobre um aluno. As definições de tipos
definidos pelo utilizador são feitas no inicio dos módulos, na zona de declarações desse módulo.
TYPE TpAluno
Numero as string*9
Nome as string
Nota as integer
END TYPE
A partir daqui podem ser declaradas variáveis do tipo TpAluno. Não esquecer que os tipos apenas representam
as características da informação. A informação existe a nível das variáveis.
Dim aluno as TpAluno
Os elementos do registo são acedidos à custa do identificador da variável, um ponto e o nome do elemento
(campo) em causa.
Aluno.numero = “150199123”
Aluno.nome = “Carlos Mendes”
Aluno.nota = 17
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 7/28
Ou
With aluno
.numero = “150199123”
.nome = “Carlos Mendes”
.nota = 17
end with
3 O tipo variant
Uma variável cujo tipo não é especificado é do tipo variant. Nestas variáveis poderá ser guardada informação
de qualquer tipo. O VB tentará determinar o tipo tendo em conta os valores atribuídos à variável e as operações
realizadas com ela.
Exemplo de declaração de uma variável do tipo variant e atribuição de um valor a essa variável
DIM v as variant / ou apenas DIM v
V=10
Deve evitar, sempre que possível, utilizar variants.
• As operações com variants são significativamente mais lentas.
• A utilização de variants leva a programas menos claros.
• A possibilidade de utilização de operações não válidas para a informação que o
variant representa, leva ao aparecimento de erros no programa.
II Variáveis
As variáveis são objectos da linguagem, cujo valor pode ser alterado durante a execução do programa.
1 - Características das variáveis
Âmbito
São as zonas do programa onde a variável é conhecida. Ou seja as zonas onde é conhecido o valor da
variável. Uma variável que seja declarada dentro de um subprograma (procedimento ou função) só é
conhecida dentro desse subprograma. Uma variável declarada a nível do módulo é conhecida em todo o
módulo, excepto dentro de subprogramas que declarem, localmente, uma variável com o mesmo nome.
Nesse caso e enquanto dentro desse subprograma, dizemos que a global perdeu o âmbito.
Tempo de vida
É o tempo durante o qual a variável está em memória. Variáveis declaradas dentro de subprogramas,
nascem ao entrar dentro do subprograma e morrem(deixam de existir) ao sair do subprograma. Variáveis
declaradas a nível do módulo continuam a existir ao entrar dentro de um subprograma, embora possam
perder temporariamente o âmbito se houver outras declaradas dentro do módulo com o mesmo nome.
Tipo
Representa o conjunto de valores que a variável pode tomar e o conjunto de operações que podem ser
feitos sobre esses valores
Valor
É a interpretação do que está guardado no endereço da variável. Por exemplo, o número (0) guardado no
endereço de uma variável do tipo inteiro é interpretado como o valor inteiro 0, mas se guardado numa
variável do tipo booleano é interpretado como o valor booleano FALSE.
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 8/28
2 – Declaração de variáveis
Em VB não é necessário declarar explicitamente variáveis. Se, durante o código, usar o nome de uma variável,
o VB cria automaticamente essa variável. No entanto é boa prática de programação declarar explicitamente
as variáveis. O VB tem uma opção para obrigar a que todas as variáveis usadas, sejam explicitamente
declaradas. Deve escrever no início de cada módulo:
Option explicit
Esta opção deve ser sempre usada pois leva à construção de programas melhor estruturados e nos quais é mais
fácil detectar erros.
Exemplos de declarações :
Dim x as integer, y as integer / declaração de duas variáveis do tipo inteiro
Dim s as string / declaração de uma variável do tipo string
Dim v(1 to 3) as integer / declaração de um array de 3 elementos do tipo inteiro
Uma variável pode existir a nível de projeto (todos os módulos), se for declarada como pública em qualquer um
dos módulos do projecto.
Exemplo:
Public x as integer / declaração de uma variável inteira pública
III - Constantes
Uma constante é um objecto cujo valor não varia durante a execução do programa. As linguagens de alto nível
permitem atribuir um valor constante a um identificador e usá-lo em vez daquele sempre que for necessário.
Definição de constantes em VBA
A definição de constantes consiste na associação de um valor constante ao respectivo identificador.
Exemplo de declaração de constantes :
const pi = 3.1415 , iva=0.23
const ano = 2018
const titulo = “Quadro”
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 9/28
IV - Expressões
Uma expressão é composta por operandos e por operadores. Os operandos podem ser» constantes
» variáveis
» expressões
» valores gerados por funções
Os operadores podem ser unários se apenas necessitarem de um operando:
» exemplos: not, -
ou binários, se tiverem dois operandos and, or
igual a =
diferente de <>
maior que >
menor que <
maior ou igual a >=
menor ou igual a <=
Exemplos:
» expressão1 1<2 ->true
» expressão2 2>3 ->false
» expressão1 and expressão2 ->false
» expressão1 or expressão2 ->true
As expressões seguintes não têm significado(uma vez que estão a usar operadores relacionais para estabelecer
relações entre tipos incompativeis):
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 10/28
Prioridade dos operadores em VBA (começando pela prioridade mais alta)
• ()
• Aritméticos
^
- (negação)
*,/
\
mod
+, -
• &
• Relacionais e (like , is )
• Boleanos
not
and
or
xor
1 – A instrução IF
Sintaxe da instrução IF:
IF <condição> THEN
<instruções>
[ELSE ‘ parcelas entre [ ] são facultativas, podem ou não existir
<instruções>]
END IF
Exemplo 1 :
IF x=1 THEN
‘
‘ Este código entre o THEN e o END IF só é executado se x for igual a 1
‘
END IF
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 11/28
Exemplo 2 (com um if dependendo de outro if) :
IF x=1 THEN
IF y = 1 THEN
‘
‘ Este código só é executado se x for igual a 1 e y for igual a 1
‘
END IF
END IF
Quando uma instrução IF usa a clausula ELSE, um conjunto de instruções é executado se a condição for
verdadeira, sendo executado outro conjunto se a condição for falsa. Em nenhuma ocasião os dois conjuntos de
instruções serão executados em simultâneo.
Exemplo :
IF x = 1 THEN
‘
‘ Este código só é executado se x tiver o valor 1
‘
ELSE
‘
‘ Este código só é executado se x não tiver o valor 1
‘
END IF
2 – A instrução CASE
Podem ser tomadas decisões muito complexas usando a instrução IF. O código resultante pode, no entanto,
tornar-se pouco claro e difícil de seguir. Existe em VB, outra instrução com a funcionalidade semelhante à do
“IF THEN ELSE” mais flexível e permitindo criar código mais claro.
Sintaxe da instrução case :
END SELECT
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 12/28
Exemplo :
SELECT CASE X
CASE 0
‘
‘ este código é executado se x=0
‘
CASE 1
‘
‘ este código é executado e x=1
‘
CASE 2
‘
‘ este código é executado se x=2
‘
CASE ELSE
‘
‘ (esta secção é opcional) o código aqui existente será executado se nenhuma das opções anteriores se verificar
‘
END SELECT
O computador testa a expressão (no exemplo, o valor da variável X) contra uma lista de constantes. O programa
irá executar o primeiro conjunto de instruções, e só esse, que estiver associado à constante cujo valor é igual à
expressão. As instruções a seguir ao CASE ELSE só serão executadas, se nenhuma das constantes tiver valor
igual à expressão.
Exemplo de utilização de uma instrução IF e CASE para classificar uma nota de 0 a 20 nos escalões
(MAU,MEDIOCRE,SUFICIENTE,BOM, MUITO BOM)
Supondo que foi declarada uma variável inteira (nota) que contém o valor da nota, e uma variável de tipo string
(escalao) que se pretende que fique com informação correspondente ao escalão. Supõe-se também que o valor
de nota está efectivamente contido entre 0 e 20.
- Se não tiver o menu Developer acessivel, vá a File – Excel Options – Customize Ribbon
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 14/28
- Faça um click dentro do Sheet1 para colocar o botão.
- Carregue em cima do botão usando o botão da direita do rato. Escolha a opção Properties. Altere a
propriedade Caption para “ESCALAO”. Este passará a ser o nome que aparece escrito no botão.
- Faça duplo click, com o botão da direita do rato, em cima do botão. Isto fará abrir um módulo onde pode
ser escrito o seu código. É criado também, automaticamente, o cabeçalho de um procedimento (sub) que
será chamado sempre que o utilizador carregar no botão.
- Neste módulo escreva as seguintes instruções (o texto a seguir à plica, a verde, são comentários para
esclarecimento do código e não necessita ser passado)
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 15/28
- Depois de escrever o código verifique os erros de sintaxe – Debug – Compile VBAProject (emende os
erros de sintaxe eventualmente assinalados)
- Na folha excel – Developer – Design Mode carregue no esquadro para sair de design mode. Cada vez que
se carregar no botão será executado o código associado ao mesmo.
1 – O ciclo FOR
Este tipo de ciclo executa um conjunto de instruções um número fixo de vezes. Deve ser usado quando se
conhece, à partida, o número de repetições a ser feita.
O ciclo é controlado por uma variável numérica (var de controle). É feita uma repetição das instruções para
cada valor da var de controle, desde o seu valor inicial até ao seu valor final. A var de controle é incrementada
automaticamente, no fim de cada repetição, do valor de incremento. Se STEP não for incluído, o incremento
toma por defeito, o valor 1.
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 16/28
Exemplos :
Sintaxe :
X=1
DO WHILE <condição>
<instruções>
LOOP
Exemplo : SIM ‘
X <11 ? ‘
X=1 X=X+1
DO WHILE X<11
‘ NÂO
‘ este código é executado 10 vezes
‘X=X+1
LOOP
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 17/28
2 – O ciclo DO LOOP ... UNTIL
O ciclo Do Loop Until repete um conjunto de instruções até que uma condição seja verdadeira. A condição só é
analisada no fim de cada repetição pelo que as instruções a repetir são executadas pelo menos uma vez.
Sintaxe :
DO X=1
<instruções>
LOOP UNTIL <condição>
Exemplo : ‘
X=1 ‘
DO X=X+1
‘
‘ este código é executado 10 vezes
‘X=X+1 NÂO
X =11 ?
LOOP UNTIL X=11
SIM
Fazer em Excel :
Criar um botão com o nome “DIGITOS”.
Quando se carregar neste botão, o programa pedirá ao utilizador para introduzir um inteiro. Em seguida o
programa calcula o número de dígitos desse inteiro, informando o utilizador através duma mensagem.
Resolução :
- No menu Developer – Insert – ActiveX Controls – Command Button
- Carregue em cima do botão usando o botão da direita do rato. Escolha a opção Properties. Altere a
propriedade Caption para “DIGITO”. Este passará a ser o nome que aparece escrito no botão.
- Faça duplo click, com o botão da direita do rato, em cima do botão. Isto fará abrir um módulo onde pode
ser escrito o seu código. É criado também, automaticamente, o cabeçalho de um procedimento (sub) que
será chamado sempre que o utilizador carregar no botão.
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 18/28
Neste módulo escreva as seguintes instruções (o texto a seguir à plica são comentários para esclarecimento do
código e não necessita ser passado)
Option Explicit ' para que seja obrigatorio declarar as variaveis usadas
Private Sub CommandButton1_Click() ' cabeçalho criado automaticamente
‘ Cada vez que se carregar no botão é executado o procedimento
‘ ou seja as instruções entre “private sub” e “end sub”
Dim s As String
Dim x As Long, aux As Long
Dim dig As Integer
s = InputBox("Introduza um número inteiro : ") ‘ obter o número do utilizador
x = Val(s) ‘converter a string obtida em inteiro
aux = x ‘ guardar o valor obtido noutra variável
dig = 0 ‘ variável que vai contar o número de dígitos
DO
aux = aux \ 10 ‘ retirar o último dígito ao número
dig = dig + 1 ‘ contra +1 por cada dígito retirado
LOOP UNTIL aux = 0 ‘ terminar o ciclo quando aux chegar a 0
MsgBox (Str(x) & " tem " & Str(dig) & " digitos") ‘ mostrar número de dígitos
End Sub
VII – Subprogramas
Um subprograma é um conjunto de instruções ao qual se deu um nome. Os subprogramas permitem a divisão
em vários módulos, cada um dos quais pode ser desenvolvido separada e independentemente dos outros. A
interligação dos vários módulos levará a um programa com a resolução total do problema.
1 – Procedimentos
Procedimentos são como pequenos programas independentes e contidos dentro de um programa maior. O
objectivo de um procedimento é o de realizar uma tarefa especifica.
Sintaxe :
SUB <identificador> [ ( < lista de argumentos > ) ]
<instruções>
END SUB
Um subprograma deve ser estanque, comunicando com o resto do programa apenas através da lista de
argumentos (parâmetros). Os parâmetros são os canais privilegiados de comunicação com o exterior, para
receber ou devolver informação. Aos parâmetros usados na declaração do subprograma dá-se o nome de
parâmetros formais. Aos parâmetros usados na chamada do subprograma dá-se o nome de parâmetros actuais.
Na chamada do subprograma, o número de parâmetros actuais tem que ser igual ao número de parâmetros
formais. Cada parâmetro formal terá sempre um parâmetro actual, do mesmo tipo, que lhe corresponde.
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 19/28
1.1 Parâmetros passados por valor (parâmetros de entrada)
Quando um parâmetro é usado apenas para transmitir informação ao subprograma, dizemos que esse parâmetro
é passado por valor. Na altura da chamada, o parâmetro formal recebe o valor transmitido pelo respectivo
parâmetro actual. Em VB, para declarar um parâmetro por valor, é necessário escrever BYVAL, antes do
nome desse parâmetro.
Se dentro do subprograma, for alterado o parâmetro formal, essa alteração não é transmitida ao parâmetro
actual.
Exemplo : (procedimento com um parâmetro x passado por valor )
SUB teste1 (ByVal x as integer)
‘
‘
‘
END SUB
1.2 Parâmetros passados por referencia (parâmetros de entrada/saída)
Quando um parâmetro tem possibilidade de devolver informação ao programa que o chama, dizemos que esse
parâmetro é passado por referencia. Na altura da chamada, o parâmetro formal recebe (partilha o endereço de
memória) do parâmetro actual. Em VB os parâmetros são, por defeito, passados por referencia.
Se, dentro do subprograma for alterado o parâmetro formal, essa alteração é transmitida ao parâmetro actual
correspondente.
Um subprograma pode ter declarado qualquer número de parâmetros, sendo cada um deles passado por valor ou
por referencia, conforme o desejado.
Exemplo : (procedimento com 2 parâmetros x, s passados por valor e z passado por feferencia)
2 – Funções
As funções são quase como procedimentos, com a excepção de devolverem um valor. Assim a função será
chamada na perspectiva do valor que vai devolver.
Sintaxe :
Como a função devolve um valor, deve ser especificado o tipo do valor devolvido, a seguir à clausula AS.
Exemplo : (declarar uma função de nome f1 com dois parâmetros inteiros e que devolve um inteiro)
A função devolve o valor que for por último atribuído ao nome da função. No caso do exemplo, a função
devolverá o valor correspondente a x + y.
Para chamar a função F1 : (supondo que a variável C foi declarada como inteiro)
C = f1(10,20)
A variável C ficará com o valor 30, uma vez que o parâmetro formal X recebe o valor 10, o parâmetro formal Y
recebe o valor 20 e a função devolve o valor de X + Y.
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 21/28
Fazer em Excel :
Criar uma função que devolva o número de dígitos de um dado inteiro.
Resolução :
- Vá para o Editor do Visual Basic, Menu Developer – Visual Basic
- Menu Insert – Module (só necessário se o seu projecto ainda não tiver nenhum módulo criado)
Neste módulo escreva as seguintes instruções (o texto a seguir à plica são comentários para esclarecimento do
código e não necessita ser passado)
Option Explicit ' para que seja obrigatorio declarar as variaveis usadas
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 22/28
VIII - Objectos Fundamentais do Excel
O Objecto Application
O objecto Application representa todos os objectos da aplicação Excel tais como, WorkBooks AddIns,
Windows...
Application.ActiveWorkBook ou ActiveWorkBook – representa o WorkBook activo (seleccionado)
Application.ActiveCell ou ActiveCell – representa a celula activa na janela activa (a janela de topo)
Application.Quit – Fecha (termina) o Microsoft Excel
O objecto Application pode também ser usado para aceder à maioria das funções do Excel
Application.WorksheetFunction.Average(range(“A1:A20”)) – expressão que devolve a media dos
valores contidos na range “A1:A20”
Pode também ser usado apenas Application.Average(range(“A1:A20”))
A versão sem o WorksheetFunction é, na maioria dos casos preferível, pois é possível controlar, dentro
do VBA, se a função Excel devolve um erro.
Dim v as variant
v = Application.Match(“Pedro”;A1:A100;0)
if IsError(v) then / Match fail
O objecto WorkBook
O objecto WorkSheet
O objecto WorkSheet pertence à colecção WorkSheets. A colecção WorkSheets (ou apenas Sheets) representa
todos os WorkSheets num dado WorkBook. Através da colecção WorkSheets (ou Sheets) pode aceder a todos
os WorkSheets, ou individualmente a cada um deles.
Nota: se omitir o WorkBook é assumido que o WorkSheet pertence ao ActiveWorkBook (Sheets(1) ou
ActiveWorkBook.Sheets(1) é o mesmo)
WorkSheets(1) ou Sheets(1) – O primeiro WorkSheet na ordem do tabulador de escolha de WorkSheets.
Neste exemplo o tabulador mostra 3 WorkSheets. O primeiro da ordem mudou o nome para “DADOS” e depois
trocou de ordem com o segundo. Teremos:
Sheets(1).name ---» “Sheet2”, Sheets(2).name ---» “DADOS”, Sheet(3).name ---» “Sheet3”
Estas alterações não irão ter influencia no nome de código. O nome de código pode ser visto no editor do VBA.
Assim, o nome de código do WorkSheet “DADOS” continua a ser Sheet1.
Sheet1.name ---» “DADOS”, Sheet2.name ---» “Sheet2”, Sheet3.name ---» “Sheet3”
ActiveSheet – representa o WorkSheet activo (aquele cuja janela está no topo)
Pode usar a propriedade Count para aceder ao número de elementos em qualquer colecção. A Expressão
Sheets.Count devolve o número de WorkSheets no ActiveWorkBook
Exercício – Mostrar o nome de todos os WorkSheets no ActiveWorkBook
1 – Abra um novo WorkBook
2 – Seleccione Sheet1
3 – Developer menu, no menu Insert escolha Command Button (ActiveX Control)
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 24/28
5 – Botão direito do rato em cima do botão, escolha Properties, mude Caption para “SHEETS”
Pode, se o pretender, mudar outras propriedades tais como color, font, size…
Deixe a propriedade name como está. Esta propriedade é o nome de código do botão, o nome pelo qual nos
referimos ao botão no programa.
Ao carregar neste botão serão mostrados os nomes de todos os WorkSheets.
6 – Em Design Mode faça um duplo clique no botão. Isto abrirá o editor do VBA, no modulo correspondente ao
Sheet1 e já com o cabeçalho criado para o evento.
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 25/28
Como utilizar botões mais “interessantes”
2 – Insira o rectangulo no WorkSheet e vá a Shape Style para dar um ar mais “tridimensional” ao botão
3 – Escreva texto dentro da shape , seleccionar a shape, botão direito do rato - Edit Text
6 – Escolha a macro Sheet1.CommandButton1_Click, a partir de agora o código é corrido sempre que se clicar a
shape. O nome da macro só é visível depois de ter efectuado o passo 4.
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 26/28
Os objectos Range, Cells, Rows e Columns
Range e Cells serão os objectos que, provavelmente, mais irá utilizar. Pode utilizar Cells para aceder a uma
célula individual e Range para aceder a uma célula ou a um conjunto de células. Usando Cells está a aceder a
um elemento do WorkSheet como se fosse um array de duas dimensões (matriz). A primeira dimensão
representa a linha e a segunda a coluna.
Nota: Uma referencia a Range ou Cells, dentro de um “Sheet Module”, sem referir o WorkSheet, significa que
são células ou ranges dentro do respectivo WorkSheet (aquele onde estamos a escrever o código). Se for num
módulo genérico (não associado a um WorkSheet) então estamos a referir células ou ranges no
ActiveWorkSheet
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 27/28
Bibliografia
_______________________________
Rosário Lucas e Carlos Rondão – UCP
Última actualização deste documento em: 29/12/2021
itlearning.clsbe.lisboa.ucp.pt/informatica/download/vbasic.pdf 28/28