excel vba: aula 11

13
EXCEL VBA (aula 11) Visual Basic prof. Gustavo Zimmermann

Upload: gustavo-zimmermann

Post on 24-Jun-2015

371 views

Category:

Software


5 download

DESCRIPTION

Curso de Excel VBA no Senac Santa Maria

TRANSCRIPT

EXCEL VBA (aula 11) Visual Basic prof. Gustavo Zimmermann

prof. Gustavo Zimmermann | [email protected]

Excel VBA – Visual Basic

Vetores e Matrizes

Vetores e matrizes são estruturas de dados homogêneas conhecidas como Arrays, matrizes, variáveis

indexadas, variáveis subscritas ou tabelas em memória, são conjunto de elementos

de mesma natureza. Cada elemento da matriz pode ser distinguido de outros elementos por um ou mais

índices inteiros. As estruturas homogêneas ou arrays são divididas em unidimensionais e

multidimensionais. Geralmente, as estruturas unidimensionais são chamadas de vetores e as

multidimensionais são chamadas de matrizes. Um vetor também pode ser considerado uma matriz,

variando apenas numa dimensão.

Introdução

prof. Gustavo Zimmermann | [email protected]

Excel VBA – Visual Basic

Vetores e Matrizes

O vetor ou matriz unidimensional é exatamente uma sequência linear de elementos

armazenados consecutivamente na memória. São variáveis do mesmo tipo declaradas com

o mesmo identificador e referenciadas por um índice para determinar sua localização

dentro da estrutura.

Vetores

dom seg ter qua qui sex sab

1 2 3 4 5 6 7

Ilustração de um vetor:

diasSem (nome do vetor)

índice

prof. Gustavo Zimmermann | [email protected]

Excel VBA – Visual Basic

Vetores e Matrizes

Vetores Operações básicas

Declaração Dim diasSem (1 To 7) As String

Inicialização diasSem(1) = “dom”: diasSem(2) = “seg”: ...

Atribuição diasSem(4) = “qua”

Escrita MsgBox diasSem(5)

prof. Gustavo Zimmermann | [email protected]

Excel VBA – Visual Basic

Vetores e Matrizes

Vetores Exemplo de declarações

1 Dim valor(10) As Integer

2 Dim soma (1 To 15) As Integer

3 Dim nome (10 To 30) As String

No primeiro exemplo acima o índice da matriz vai de 0 a 10 – contém 11 elementos. O

índice inicial de indexação de um vetor ou a matriz depende da definição da

instrução Option Base, na seção de declaração do módulo. Se o

comando Option Base 1 for especificado, todos os índices iniciam em 1, caso contrário, em

0. No segundo e terceiro exemplos os índices variam de 1 a 15 e de 10 a 30,

respectivamente.

prof. Gustavo Zimmermann | [email protected]

Excel VBA – Visual Basic

Vetores e Matrizes

Vetores Exemplo 1

1. Sub exemplo_vetor_1()

2. Dim notas(10) As Single

3. Dim nota As String, soma As Single, media As Single

4. Dim i As Integer

5. soma = 0

6. For i = 1 To 10

7. nota = InputBox("Informe a Nota " & i)

8. soma = soma + nota

9. notas(i) = nota

10. Next

11. media = soma / 10

12. MsgBox ("Média da turma: " & media)

13. End Sub

prof. Gustavo Zimmermann | [email protected]

Excel VBA – Visual Basic

Vetores e Matrizes

Vetores Exemplo 2

1. Sub exemplo_vetor_2()

2. Dim nome(3) As String

3. Dim nota(3) As Single

4. Dim i As Integer, j As Integer

5. 'Loop de COLETA de Dados

6. For i = 0 To 2

7. nome(i) = InputBox("Digite o NOME do Aluno")

8. nota(i) = InputBox("Digite a NOTA do Aluno")

9. Next

10. 'Loop de PRINT de dados

11. For j = 0 To 2

12. MsgBox (nome(j) & ": " & nota(j))

13. Next

14. End Sub

prof. Gustavo Zimmermann | [email protected]

Excel VBA – Visual Basic

Vetores e Matrizes

Matrizes bidimensionais No Visual Basic, pode-se declarar matrizes com até 60 dimensões.

A instrução a seguir declara uma matriz bidimensional de 3 por 5:

1. Dim matriz (1 To 3, 1 To 5) As Single

1. Dim matriz (3, 5) As Single

ou

No primeiro exemplo os índices da matriz iniciam em 1 e no segundo, em 0 se não for

declarada no nível de módulo a opção Option Base 1. A primeira dimensão da matriz se

refere à linha e a segunda, dimensão à coluna, no primeiro exemplo tem-se uma matriz de

3 linhas por 5 colunas e no segundo, 4 linhas por 6 colunas na ausência do comando

Option Base 1.

prof. Gustavo Zimmermann | [email protected]

Excel VBA – Visual Basic

Vetores e Matrizes

Matrizes bidimensionais O procedimento, a seguir, preenche cada elemento da matriz bidimensional com base no

valor de sua localização dentro da matriz:

1. Sub exemplo1_matriz()

2. Dim i As Integer, j As Integer

3. Dim matriz(3, 5) As Single

4. ' Preenche a matriz com valores e os imprime na janela

5. ' de verificação imediata.

6. For i = 1 To 3

7. For j = 1 To 5

8. matriz(i, j) = i * j

9. Debug.Print matriz(i, j)

10. Next

11. Debug.Print ' imprime branco ao completar uma linha.

12. Next

13. End Sub

prof. Gustavo Zimmermann | [email protected]

Excel VBA – Visual Basic

Vetores e Matrizes

Matrizes bidimensionais Saída

j (x)

0 1 2 3 4

i (y)

2 3 6 9 12 15

1 2 4 6 8 10

0 1 2 3 4 5

prof. Gustavo Zimmermann | [email protected]

Excel VBA – Visual Basic

Vetores e Matrizes

1. Sub exemplo2_matriz()

2. Dim nome(1 To 3) As String

3. Dim notas(1 To 3, 1 To 2) As Single

4. Dim i As Single, j As Single

5. For i = 1 To 3

6. nome(i) = InputBox("Digite o NOME do aluno:")

7. For j = 1 To 2

8. notas(i, j) = InputBox("Digite A NOTA da G“ & j)

9. Next

10. Next

11. For i = 1 To 3

12. MsgBox ("Aluna: " & nome(i) & " obteve " & "G1: " & notas(i, 1) & " G2: " &

notas(i, 2))

13. Next

14. End Sub

Exemplo 2

Matrizes bidimensionais

prof. Gustavo Zimmermann | [email protected]

Excel VBA – Visual Basic

Vetores e Matrizes

Matrizes bidimensionais O procedimento, a seguir, preenche cada elemento da matriz bidimensional com base no

valor de sua localização dentro da matriz:

1. Sub exemplo1_matriz()

2. Dim i As Integer, j As Integer

3. Dim matriz(3, 5) As Single

4. ' Preenche a matriz com valores e os imprime na janela

5. ' de verificação imediata.

6. For i = 1 To 3

7. For j = 1 To 5

8. matriz(i, j) = i * j

9. Debug.Print matriz(i, j)

10. Next

11. Debug.Print ' imprime branco ao completar uma linha.

12. Next

13. End Sub

prof. Gustavo Zimmermann | [email protected]

Excel VBA – Visual Basic

Vetores e Matrizes

Matrizes fixas e dinâmicas As matrizes declaradas acima são exemplos de matrizes fixas. A matriz dinâmica é

declarada deixando-se vazios os parênteses como no exemplo que segue:

1. Dim matDinamica( ) As Integer