Professional Documents
Culture Documents
Evento Activate;
#Aula 13
O que so variveis;
Tipos de variveis
- Boolean
- Integer
- String
- Long
- Currency
- Date
A sintaxe para declarao: Dim nome_da_varivel As tipo_da_varivel
Tambm podemos declarar mais do que uma varivel, com um nico comando Dim. Para
isto, basta separar as variveis, com vrgula, conforme exemplificado abaixo:
Empty
Null
Boolean
Byte
Double (8 bytes)
Integer (2 bytes)
Currency
Valores
na
faixa
de
-923.337.203.685.447,5808
at
Long (4 bytes)
Date(Time)
String
caracteres.
Object
Error
#Aula 14
Tipo Worksheet;
Atribuindo variveis com o comando Set
Obs.: Quando definimos a sub-rotina como Private Sub, ao final dessa Sub as
variveis se perdem. Do contrrio, quando so definidas como Public Sub temos
(no sei ainda se a possibilidade ou se automaticamente todas j ficam)
variveis visveis todos os objetos e mdulos do projeto.
Sempre que trabalharmos com objetos, sendo os mais comuns Range, Worksheet e
Workbook, devemos atentar para o uso da instruo Set, seno em vez de armazenar o
intervalo, sero armazenados os valores contidos no intervalo.
Vamos comear preenchendo os seguintes valores no intervalo A1:A4 de uma planilha
chamada Teste da instruo Set
A1: Texto; A2: 64; A3: FALSO; A4: =NO.DISP().
Agora vamos para o cdigo VBA.
Sub Exemplo_Set01()
rg = [A1:A4]
End Sub
Olhando o cdigo, poderamos dizer que atribumos o intervalo [A1:A4] varivel rg?
A resposta no
Na verdade criamos uma varivel que contm apenas os valores presentes no intervalo
A1:A4.
possvel buscar qualquer um desses valores e at realizar operaes com eles, mas os
valores de A1:A4 permanecem inalterados. A varivel apenas um reflexo do contedo do
intervalo e no o prprio intervalo.
Se tentarmos executar qualquer mtodo ou retornar uma propriedade a partir de rg,
obteremos uma mensagem de erro como resultado:
Sub Exemplo_Set01()
rg = [A1:A4]
rg.Font.Name = "Arial"
End Sub
Mensagem de erro:
Erro em tempo de execuo 424.
O objeto obrigatrio.
Essa mensagem significa que a varivel rg no um objeto, portanto no pode ter sua
propriedade Font.Name alterada.
Para atribuir corretamente um objeto a uma varivel temos que adicionar a instruo Set
linha de comando.
Sub Exemplo_Set01()
Set rg = [A1:A4]
rg.Font.Name = "Arial"
End Sub
O cdigo acima, funciona adequadamente e a fonte do intervalo alterada para Arial
conforme desejado.
PODEMOS ATRIBUIR UM OBJETO A UMA VARIVEL, AO INVS DE CHAM-LO TODA VEZ,
CHAMAMOS A VARIVEL, AS VANTAGENS DISSO SO:
Sub Exemplo_Set02()
With Worksheets("Teste da instruo Set").Range("A1:A4")
.Font.ColorIndex = 3
.Interior.ColorIndex = 10
End With
With Worksheets("Teste da instruo Set").Range("B1:B4")
.Font.ColorIndex = 10
.Interior.ColorIndex = 3
End With
End Sub
Sub Exemplo_Set02()
Set rg1 = Worksheets("Teste da instruo Set").Range("A1:A4")
Set rg2 = Worksheets("Teste da instruo Set").Range("B1:B4")
With rg1
.Font.ColorIndex = 3
.Interior.ColorIndex = 10
End With
With rg2
.Font.ColorIndex = 10
.Interior.ColorIndex = 3
End With
End Sub
No primeiro cdigo tivemos que escrever todas as definies do objeto em cada lao With, ao
passo que no segundo exemplo, os laos With ficaram bem mais enxutos.
Esses so exemplos simples, mas em cdigos mais complexos torna-se muito melhor
trabalhar com nomes de variveis mais amigveis e utiliz-los para manipular mais
efetivamente os objetos.
A segunda vantagem que com as variveis objeto carregadas na memria, o
processamento se torna mais veloz, o que contribui para tornar os cdigos mais rpidos.
A terceira vantagem a flexibilidade do cdigo. Se quisermos modificar a planilha ou o
intervalo no primeiro cdigo, teremos que garantir que todas as referncias sejam alteradas.
Por outro lado, para realizar a mesma alterao no segundo exemplo de cdigo, basta alterar
a linha de comando que contm a instruo Set.
ATENO PARA ESSA BOA PRTICA
With rg1
.Font.ColorIndex = 3
.Interior.ColorIndex = 10
End With
With rg2
.Font.ColorIndex = 10
.Interior.ColorIndex = 3
End With
Set rg1 = Nothing
Set rg2 = Nothing
End Sub
Dim x As Date
x = Date
Armazena a data atual na varivel x.
#Aula 15, 16 e 17
Estruturas de repetio;
Do While
...
igual ao while {} da linguagem C.
Loop
...
Loop
Tanto until como o while pode ter a condio colocada no fim da rotina (ex:
do ... loop while condio) igual o do while da linguagem C.
#Aula 18, 19 e 20
If .... Then...........Else............End If
For x = 1 To 20 .......... Next
For x = 1 To 20 Step 2 .......... Next (step o passo)
Private Sub btexecuta_Click()
Private Sub btexecuta_Click()
Dim W
Dim cont
Dim valor
As Worksheet
As Integer
As Integer
Set W = Sheets("Plan1")
W.Range("a1").Select
valor = W.Range("b1").Value
For cont = 1 To valor
ActiveCell.Value = cont
ActiveCell.Offset(1,
0).Select
Dim W
Dim cont
Dim valor
Set W = Sheets("Plan1")
W.Range("a1").Select
valor = W.Range("b1").Value
For cont = 1 To valor Step 2
ActiveCell.Value = cont
ActiveCell.Offset(1,
0).Select
Next
Next
End Sub
As Worksheet
As Integer
As Integer
End Sub
#Aula 21 e 22
InputBox (recebe uma resposta do usurio)
For Each ..... Next
Repete um grupo de instrues para cada elemento em uma coleo.
Exemplos:
As Variant
As String
#Aula 23
ENVIRON
Variveis de ambiente do Sistema Operacional.
Como gravar um log com a data de abertura e fechamento de uma
planilha do Excel, com uso dos seguintes recursos:
ENVIRON
APPLICATION.ENABLEEVENTS
(True or False) desabilita a ocorrncia de eventos. Este exemplo desabilita
eventos antes de um arquivo ser salvo de modo que o
evento BeforeSave no ocorra.
Application.EnableEvents = False
ActiveWorkbook.Save
Application.EnableEvents = True
APPLICATION.SAVE
End Sub
Private Sub Workbook_Open()
Dim W As Worksheet
Dim UltCel As Range
Set W = Sheets("Controle de Acessos")
W.Select
W.Range("a2").Select
Set UltCel = W.Range("a1048576").End(xlUp).Offset(1, 0)
UltCel.Select
ActiveCell.Value = Environ("Username")
ActiveCell.Offset(0, 1).Value = Date & " / " & Time
Range("B:B").EntireColumn.AutoFit
End Sub
O mtodo Environ retorna informaes do usurio e sua mquina. Podemos
chamar seus dados colocando um nmero dentro dos parnteses (Environ
(n)).
A planilha Mtodos Environ, na pasta Curso Macros e VBA, possui os
possveis atributos desta funo (ver na planilha), adiquiquiridos pelo
cdigo:
Private Sub btExibEnv_Click()
Dim W As Worksheet
Dim x As Integer
Set W = Sheets("Plan1")
W.Select
W.Range("a1").Select
For x = 1 To 100
#Aula 24
Bloqueie o acesso a uma planilha da sua pasta de trabalho e
permita o acesso somente a pessoas autorizadas. Uso das funes:
ENVIRON
#Aula 25
ON ERROR - Tratamento de erros no VBA
As Variant
As String
As Variant
As String
As Variant
As String
#Aula 26
Rotina para excluir registros de um cadastro.
Criao de Subs;
Sintaxe
expresso.PasteSpecial(Paste, Operation, SkipBlanks, Transpose)
expresso uma varivel que representa um objeto Range.
Obs.: O mtodo Activesheet.paste no utiliza uma expresso tipo range. Este mtodo cola na
seleo atual da planilha ativa.
Parmetros
Nome
Obrigatrio/opcion
al
Tipo de dados
Descrio
Paste
Opcional
XlPasteType
. A parte do
intervalo a ser
colada.
Operation
Opcional
XlPasteSpecialOperatio
. A operao de
colagem.
SkipBlank
s
Opcional
Variant
Transpose
Opcional
Variant
Valo
r
Descrio
xlPasteAll
410
4
xlPasteAllExceptBorders
xlPasteAllMergingConditionalF
ormats
14
xlPasteAllUsingSourceTheme
13
xlPasteColumnWidths
xlPasteComments
414
4
Comentrios so coladas.
xlPasteFormats
412
2
xlPasteFormulas
412
3
Frmulas so coladas.
xlPasteFormulasAndNumberFo
rmats
11
xlPasteValidation
Validaes so coladas.
xlPasteValues
416
3
Os valores so colados.
xlPasteValuesAndNumberForm
ats
12
Valo
r
Descrio
xlPasteSpecialOperationA
dd
xlPasteSpecialOperationD
ivide
xlPasteSpecialOperationM
ultiply
xlPasteSpecialOperationN
one
414
2
xlPasteSpecialOperationS
ubtract
Application.CutCopyMode = False
Selection.ClearContents
Range("c4").Select
AtualizaCombo
MsgBox "Processo concludo...", vbOKOnly, "Concludo"
Application.ScreenUpdating = True
End Sub
Sub AtualizaCombo()
Application.ScreenUpdating = False
Dim W As Worksheet
Set W = Sheets("Clientes")
W.Select
W.Range("a2").Select
Sheets("Cadastro").ComboBox1.Clear
Do While ActiveCell.Value <> ""
Sheets("Cadastro").ComboBox1.AddItem ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop
Sheets("Cadastro").Select
Application.ScreenUpdating = True
End Sub
Private Sub Workbook_Open()
'As subs so criadas para evitar duplicidades de programao
AtualizaCombo
End Sub
Set W = Sheets("Clientes")
Nome = Sheets("Cadastro").ComboBox1.Value
If Nome = "" Then
MsgBox "Nenhum nome selecionado.Processo abortado"
Exit Sub
End If
W.Select
W.Range("a2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value = Nome Then
ActiveCell.EntireRow.Delete
MsgBox "Registro apagado."
Exit Do
End If
ActiveCell.Offset(1, 0).Select
Loop
AtualizaCombo
Sheets("Cadastro").Select
Application.ScreenUpdating = True
End Sub
Mtodo ComboBox.AddItem
Sintaxe
expresso.AddItem(Item, Index)
expresso uma varivel que representa um objeto ComboBox.
Nom
e
Obrigatrio/opci
onal
Tipo de
dados
Descrio
Item
Obrigatrio
String
Inde
x
Opcional
Variant
#Aula 27
Rotina para alterar registros de um cadastro.
Conceitos:
Sub InserirRegistros()
'
' InserirRegistros Macro
'
'
Application.ScreenUpdating = False
'Rotina de checagem
'Verificar se existe o cliente...
'Se existir atualizar os seus dados...
'----------------------------------------------Dim W As Worksheet
Dim WCad As Worksheet
Dim Nome As String
Set W = Sheets("Clientes")
Set WCad = Sheets("Cadastro")
Nome = Sheets("Cadastro").cmbBusca.Value
W.Select
W.Range("A2").Select
Do While ActiveCell.Value <> ""
If ActiveCell.Value = Nome Then
ActiveCell.Value = WCad.Range("c4").Value
ActiveCell.Offset(0, 1).Value = WCad.Range("D4").Value
MsgBox "Dados alterado com sucesso."
'Temos que selecionar um objeto de cada vez
WCad.Select
WCad.Range("C4").Select
AtualizaCombo
Exit Sub
End If
ActiveCell.Offset(1, 0).Select
Loop
'Gravao dos Dados (Novos)
'------------------------------------------------Range("C4:D4").Select
Selection.Copy
Sheets("Clientes").Select
Range("A1048576").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.PasteSpecial Paste:=xlPasteValues
Sheets("Cadastro").Select
Range("C4:D4").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("c4").Select
AtualizaCombo
MsgBox "Processo concludo...", vbOKOnly, "Concludo"
Application.ScreenUpdating = True
End Sub
Sub AtualizaCombo()
Application.ScreenUpdating = False
Dim W As Worksheet
Set W = Sheets("Clientes")
W.Select
W.Range("a2").Select
Sheets("Cadastro").ComboBox1.Clear
Sheets("Cadastro").cmbBusca.Clear
Do While ActiveCell.Value <> ""
Sheets("Cadastro").ComboBox1.AddItem ActiveCell.Value
Sheets("Cadastro").cmbBusca.AddItem ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop
Sheets("Cadastro").Select
Application.ScreenUpdating = True
End Sub
Private Sub btBuscar_Click()
Application.ScreenUpdating = False
'Definir
Dim W As
Dim WCad
Dim Nome
variveis
Worksheet
As Worksheet
As String
Set W = Sheets("Clientes")
Set WCad = Sheets("Cadastro")
Nome = Sheets("Cadastro").cmbBusca.Value
W.Select
W.Range("A2").Select
'Percorre todas as clulas da planilha clientes
Do While ActiveCell.Value <> ""
'Testa para ver se a clula ativa a que possui o nome
procurado
If ActiveCell.Value = Nome Then
WCad.Range("C4").Value = ActiveCell.Value
WCad.Range("D4").Value = ActiveCell.Offset(0, 1).Value
Exit Do
End If
ActiveCell.Offset(1, 0).Select
Loop
WCad.Select
WCad.Range("C4").Select
Application.ScreenUpdating = True
End Sub
#Aula 28
Criar uma rotina que oculta e exibe planilhas. Posso utilizar, por exemplo,
nos casos onde o usurio clica em um boto e s exibida a planilha
necessria pra sua utilizao.
Criando a rotina OcultaPlanilhas sempre que retornarmos ao menu de
botes, essa rotina ativada. Quando clicar em algum boto, esse exibe
somente a planilha que ser utilizada.
#Aula 29
Plan 1
Plan 2
Plan 3
W
UltCel
Nome
Planilha
As
As
As
As
Worksheet
Range
String
String
Set W = Sheets("Plan1")
W.Select
W.Range("b:b").EntireColumn.ClearContents
W.Range("b1").Value = "Aparece em:"
Range("a2").Select
'Loop Principal
'------------------'Objetivo: Percorrer a planilha principal de nomes
'Obs.: Importante NO ter linhas em branco entre os dados
'pois seno o cdigo dever ser adaptado
Do While ActiveCell.Value <> ""
'Verificar e guardar o nome procurado
Nome = ActiveCell.Value
'Guarda a ltima clula utilizada na planilha principal
Set UltCel = ActiveCell
#Aula 30
Arranjos (n,2) dinmicos entre nmeros utilizando:
Contadores de controle;
Do While;
W
UltCel
UltLin
Valor
A
As
As
As
As
As
Worksheet
Range
Range
Long Poderia ser string e usar letras tb
Integer
Set W = Sheets("Plan1")
W.Select
W.Range("a1").Select
'Vamos guardar o valor da primeira clula
'Na sequncia combinar esse valor com as
'demais clulas, uma por vez
'Guardar a ltima clula que foi feita combinaes
Set UltCel = ActiveCell
'Apagar os resultados anteriores
W.Range("c:C").EntireColumn.ClearContents
W.Range("C").Value = "Combinaes Vertical"
'Estrutura de repetio principal.
'Vai percorrer todos os valores para iniciar as combinaes
Do While ActiveCell.Value <> ""
'Guardar valor da clula principal
Valor = ActiveCell.Value
'Repetir as combinaes entre Valor (varivel)
'e os demais nmeros da coluna. A funo
'Application.WorksheetFunction.CountA(W.Range("a:a"))
'equivalente a funo contar valores.
For A = 1 To
Application.WorksheetFunction.CountA(W.Range("a:a"))
Sintaxe
expresso.WorksheetFunction
expresso Uma varivel que representa um objeto Application.
Este exemplo exibe o resultado da aplicao da funo de planilha Min ao
intervalo A1:A10.
Set myRange = Worksheets("Sheet1").Range("A1:C10")
answer = Application.WorksheetFunction.Min(myRange)
MsgBox answer
Contadores de controle;
Do While;
#Aula 32
Utilizar funes do Excel diretamente no cdigo
Application.WorksheetFunction;
Outra maneira:
Private Sub btSegundaForma_Click()
Dim UltCel As Range
Dim W As Worksheet
Dim A As Integer
Set W = Sheets("ProcV")
W.Select
For A = 1 To 2
If A = 1 Then
W.Range("H2").Select
Else
W.Range("I2").Select
End If
Set UltCel = W.Range("f1048576").End(xlUp)
Do While ActiveCell.Row <= UltCel.Row
ActiveCell.Value =
Application.WorksheetFunction.VLookup( _
W.Range("g" & ActiveCell.Row).Value, _
W.Range("A1:C13"), A + 1, 0)
ActiveCell.Offset(1, 0).Select
Loop
Next
End Sub
#Aula 33
Funes do Excel diretamente no cdigo.
Mximo (MAX)
Mnimo (MIN)
Mdia (AVERAGE)
Cont.Valores (COUNTA)
Cont.Nm (COUNT)
ContarVazio (COUNTBLANK)
Maior (LARGE)
Menor (SMALL)
1
2
3
4
5
6
7
8
9
10
A
AMOSTRA 1
0,220
0,361
0,621
0,718
0,629
0,529
0,082
0,927
0,240
B
AMOSTRA 2
0,261
0,587
Erro
Erro
0,142
0,242
0,326
0,642
0,406
C
AMOSTRA 3
0,668
0,797
0,142
0,488
0,895
0,674
D
AMOSTRA 4
0,659
0,493
0,171
0,584
0,995
0,861
0,075
0,859
0,573
#Aula 34
Planilha que corrige automaticamente exerccios feitos.
#Aula 35
Planilha que corrige automaticamente exerccios feitos.
Range("L3").Select
End Sub
#Aula 36
Funes do Excel diretamente no cdigo.
ESQUERDA (Left)
DIREITA (Right)
EXT.TEXTO (Mid)
ARRUMAR (Trim)
MAISCULA (Ucase)
MINSCULA (Lcase)
'Funo ESQUERDA
W.Range("a9").Value = Left(W.Range("a2").Value, 6)
W.Range("B9").Value = "Left"
'Extrair textos a direita
'----------------------------------'Funo DIREITA
W.Range("a10").Value = Right(W.Range("a3").Value, 8)
W.Range("b10").Value = "Right"
'
Retirar espaos desnecessrios (somente Antes e Depois do
texto).
'------------------------------------------------------------------------'
Diferente da funo ARRUMAR que retira excesso espao entre as
palavras.
'
Se chamarmos a funo diretamente do aplicativo Excel, a ela
identica
'a funo ARRUMAR, retirando tambm espaos intermedirios.
'
W.Range("a11").Value = Trim(W.Range("a4").Value)
W.Range("a11").Value =
Application.WorksheetFunction.Trim(W.Range("a4").Value)
W.Range("b11").Value = "Trim"
'Converter em maiscula
'----------------------------------'Funo MAISCULA
W.Range("a12").Value = UCase(W.Range("a5").Value)
W.Range("b12").Value = "UCase"
'Converter em minscula
'----------------------------------'Funo MINSCULA
W.Range("a13").Value = LCase(W.Range("a6").Value)
W.Range("b13").Value = "LCase"
'Extrair texto
'----------------------------------'Funo EXT.TEXTO
W.Range("a14").Value = Mid(W.Range("a7").Value, 8, 3)
W.Range("b14").Value = "Mid"
End Sub
#Aula 37
Criar formulrios;
Sub MostrarForm()
frmMenu.Show
End Sub
#Aula 38
Como trabalhar com uma caixa de combinao (parte 1).
End Sub
Caso no seja uma lista dinmica, caso a lista seja esttica e nunca altere a
quantidade de itens, posso inserir os dados diretamente nas Propriedades
do Objeto, em RowSource.
#Aula 39
Como trabalhar com uma caixa de combinao (parte 2).
Formulrio
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Resultado
#Aula 40
Caixa de seleo (checkbox).
.Range("a2").Value = Nome
.Range("b2").Value = Opc1
.Range("c2").Value = Opc2
'.select
.Range("a1").Select
End With
End Sub
#Aula 42
Boto de Ativao ou Toggle Button
Como utilizar;
#Aula 45
Caixa de Listagem ou ListBox
#Aula 46
Controle TabStrip.
O que o TabStrip;
End Select
End Sub
Private Sub UserForm_Activate()
Me.ListBox1.ColumnCount = 2
Me.ListBox1.ColumnWidths = "25pt;100pt"
TabStrip1_Change 'Poderia usar o call
End Sub
Mudando de assunto:
PROCEDIMENTOS SUB: Executam diversos mtodos.
Damos um nome e abrimos e fechamos parnteses, dentro dos
quais podemos inserir os argumentos.
PROCEDIMENTOS FUNCTION: So frmulas. Executam uma funo e
retornam um nico valor. Dessa maneira, podemos criar funes que
ficaro disponveis para uso na planilha.
Ex:
Function QUARTA_POT (x As Interger)
QUARTA_POT = x ^ 4
End Function
Em ambos os procedimentos o nome dado pode conter letras e nmeros,
mas devem ser iniciados sempre com letras. No aceita espaos nem
pontos. No distingue minsculas de maisculas. Os nomes devem
conter no mximo 255 caracteres (1 byte). Os caracteres #$%@!^ no
so aceitos.
Quando chamamos uma sub, supondo que essa sub realiza um clculo,
logo devemos configurar essa sub pra receber o parmetro que
armazenar o valor informado quando fizermos a chamada dessa sub.
Esse valor informado ser o argumento, que requisitado justamente
porque foi definido o parmetro.
Parmetros e
argumentos de
procedimento (Visual
Basic)
Um parmetro representa um valor que o procedimento espera que voc fornea
quando voc o chama. A declarao do procedimento define os seus parmetros.
Voc pode definir um procedimento sem parmetros, um parmetro, ou mais de
um.
Um argumento representa o valor que voc fornece para um parmetro do
procedimento, quando voc chama o procedimento O cdigo de chamada fornece
os argumentos quando chama o procedimento. A parte da chamada de
procedimento que especifica os argumentos chamada alista de argumentos.
A ilustrao a seguir mostra o cdigo para chamar o
procedimento safeSquareRoot em dois locais diferentes. A primeira chamada
passa o valor da varivel x (4.0) para o parmetro numbere o valor de retorno
de root (2.0) atribudo varivel y. A segunda chamada passa o valor literal 9.0
paranumbere atribui o valor de retorno (3.0), a varivel z.
Module Module1
Sub Main()
' Declarar uma instncia da classe e atribuir um valor para o
seu campo.
Dim c1 As Class1 = New Class1()
c1.Field = 5
Console.WriteLine(c1.Field) ' Tipo printf
' Output: 5
' O ByVal no impede a alterao do valor de um campo ou
qualquer propriedade.
ChangeFieldValue(c1)
Console.WriteLine(c1.Field)
' Output: 500
' ByVal impede a alterao do valor de c1.
ChangeClassReference(c1)
Console.WriteLine(c1.Field)
' Output: 500
Console.ReadKey()
End Sub
Public Sub ChangeFieldValue(ByVal cls As Class1)
cls.Field = 500
End Sub
Public Sub ChangeClassReference(ByVal cls As Class1)
cls = New Class1()
cls.Field = 1000
End Sub
Public Class Class1
Public Field As Integer
End Class
End Module
Capacidade de Modificar
Quando voc passa um elemento no-modificvel como argumento, o procedimento
nunca pode modific-lo no cdigo de chamada, se passado ByVal ou ByRef.
Para um elemento modificvel, a seguinte tabela resume a interao entre o tipo de
elemento e o mecanismo de passagem.
Tipo de elemento
Passado ByVal
Passado ByRef
Tipo de valor
(contm apenas um
valor)
O procedimento no pode
mudar a varivel ou qualquer
um dos seus membros.
O procedimento pode
mudar a varivel e seus
membros.
Tipo de referncia
(contm um ponteiro
para a instncia de
classe ou estrutura).
O procedimento no pode
mudar a varivel mas pode
mudar membros da instncia
para qual ele aponta.
O procedimento pode
mudar a varivel e mudar
membros da instncia para
qual ele aponta.
Elementos modificveis
Elementos no modificveis
Variveis somente-leitura,
campos e propriedades
Literais e constantes
Membros de enumerao
Elementos da matriz