NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Você está em: PrincipalTutoriaisHerbertgois : Programandovbnet017
Quer receber novidades e e-books gratuitos?

FILTRO DE TUTORIAIS:


Programando com VB.NET

 

USANDO ARRAYS

 

Imagine que você tem que armazenar as faltas cometidas por cada jogador de um time em uma partida de futebol. Você precisaria armazenar o nome e o número de faltas que cada jogador cometeu. Como faria para armazenar isso em variáveis? Provavelmente você teria que declarar duas variáveis para cada jogador, uma para armazenar o nome e outra o número de faltas, chagando facilmente a 22 variáveis, isso, se não houver nenhuma substituição. Neste tutorial vamos aprender como gerenciar esse tipo de informação.

 

Arrays são usados para gerenciar grande quantidade de informação. Como variáveis, você precisa declarar seus arrays antes de usá-los. Os arrays também respeitam as mesmas regras de escopo que as variáveis, ou seja se declaradas dentro de procedimentos, ficam disponíveis apenas para o procedimento em questão.

 

Vamos fazer um exemplo, nele vamos criar o programa que armazenará os dados nos nomes dos jogadores e as faltas cometidas por eles.

 

1 - Entre no Visual Studio e crie um novo projeto do tipo Windows Application chamado Arrays.

 

 

2 - Arraste para o Form1 os seguintes controles:

 

» 3 Button

» 1 ListBox

 

3 - Altere a propriedade Text do Button1 para Inserir Jogadores.

 

4 - Altere a propriedade Text do Form1 para Arrays.

 

5 - Organize-os como a figura abaixo:

 

 

6 - Na janela Solution Explorer clique no botão View Code para ir para o Painel de código.

 

7 - Digite dentro da classe do Form1 o seguinte código:

 

Dim Jogadores(10) As String

 

Vai ficar assim:

 

 

Nesta linha declaramos um Array de tamanho fixo. Perceba que a declaração é bem semelhante a de uma variável, com exeção do (10). O array que criamos é como uma tabela com 11 linhas, isso porque o array começa sempre no 0 e acaba no número que especificamos, no caso 10, o suficiente para armazenar o nome do time inteiro, 11 jogadores.

 

8 - Na janela Solution Explorer clique em View Designer para voltar para o Form1 no modo Design, você pode também clicar na aba Form1.vb[Design] ao lado da aba Start Page, à essa altura do curso você ja deve estar familiarizado com o Visual Studio.

 

9 - De um clique duplo sobre o Button1 e digite o seguinte código:

 

Jogadores(0) = “Marcos

 

Isso insere “Marcos” na primeira linha do Array, se colocassemos 6 ao invés de 0, por exemplo, seria na linha 7.

 

10 - Mude a propriedade Text do Button2 para Visualizar.

 

 

11 - De um clique duplo sobre o Button2 e digite o seguinte código:

 

ListBox1.Items.Add(Jogadores(0))

 

Isso insere na ListBox1 o conteúdo da primeira linha do array Jogadores, se colocassemos 6, exibiria o conteúdo da linha 7, lembre-se que de que todo array começa com 0, obrigatoriamente.

 

Não se assuste com o código para inserir no ListBox1, se fosse em uma TextBox ou Label você poderia usar a seguinte linha de código:

 

TextBox1.Text = Jogadores(0)

 

Só que para inserir um item no ListBox precisamos usar seu método Add.

 

Agora que você já compreende como inserir e ler dados do array vamos avançar no exemplo.

 

12 - Volte para o código do procedimento do Button1.

 

13 - Substitua o código pelo seguinte:

 

        Dim Mensagem, Jogador As String

 

        Dim i As Integer

 

        Mensagem = “Digite o nome do jogador

 

        For i = 0 To UBound(Jogadores)

            Jogador = “Jogador “ & (i + 1)

            Jogadores(i) = InputBox(Mensagem, Jogador)

        Next

 

Vai ficar assim:

 

 

Com este código vamos solicitar ao usuário que digite o nome dos 11 jogadores. Para isso fazemos um loop que vai de 0 até o total de itens no array.

 

Como sabemos que o Array possui 11 linhas poderia ter usado o seguinte código, que seria mais simples:

 

For i = 0 To 11

 

No entando a técnica que utilizamos é mais flexivel por prever que o array pode aumentar.

 

Agora temos que mudar o código que exibe os dados também, para que possa exibir todos os dados cadastrados.

 

14 - Mude o código do Button2 pelo seguinte:

        Dim i As Integer

 

        For i = 0 To UBound(Jogadores)

            ListBox1.Items.Add(Jogadores(i))

        Next

 

Vai ficar assim:

 

 

Aqui usamos o loop For também para passar por cada item do Array e adicioná-lo no ListBox1.

 

Lembrando que a cada passada pelo For o i assume de uma  linha do array até chegar ao final.

 

15 - Execute a aplicação.

 

16 - Clique no botão Inserir Jogadores.

 

 

Aparece uma caixa pedindo para que digite o nome do Jogador 1.

 

17 - Digite um nome para o Jogador 1 e clique em OK.

 

Ele pede para inserir o nome do Jogador 2.

 

18 - Digite um nome para o Jogador 2 e clique em OK. Faça isso para os 11 jogadores.

 

19 - Clique no botão Visualizar.

 

 

O nome dos 11 jogadores é listado.

 

Como você pode ver, trabalhamos facilmente com os nomes dos 11 jogadores em nosso array, podemos modificar os dados do nosso array facilmente, bastando para isso indicar qual linha deve ser alterada e o novo dado, como no exemplo:

 

Jogadores(10) = “Robinho”

 

Um array pode conter mais de um coluna. Vamos entender como isso funciona implementando o código que vai armazenar o número de faltas de cada jogador.

 

Como um Array só pode conter um tipo de dado e nosso Array já é do tipo String, no nosso exemplo vamos adicionar o número de faltas como string mesmo, mas, a maneira correta seria criar um outro Array do tipo integer para armazenar as faltas.

 

20 - Altere o código que declar o Array para o seguinte:

 

Dim Jogadores(10, 1) As String

 

Isso cria um Array com 11 linhas e 2 colunas. Um Array pode ter várias colunas.

 

21 - Localize no procedimento do evento do Button1, o seguinte código:

 

Jogadores(i) = InputBox(Mensagem, Jogador)

 

22 - Mude-o para o seguinte:

 

Jogadores(i, 0) = InputBox(Mensagem, Jogador)

 

Isso apenas indica que vamos adicionar o nome na linha que o loop indicar, na coluna 1, lembrando que os Arrays sempre iniciam com indice 0.

 

 

23 - Mude a propriedade Text do Button3 para Adicionar Faltas.

 

 

24 - Dê um clique duplo sobre o Button3 e digite o seguinte código:

 

        Dim Mensagem As String

        Dim i As Integer

 

        For i = 0 To UBound(Jogadores)

            Mensagem = “Digite as faltas do “ & Jogadores(i, 0)

            Jogadores(i, 1) = InputBox(Mensagem, “Faltas”)

        Next

 

Vai ficar assim:

 

 

Isso é semelhante ao código do Button1, com algumas modificações, como as mensagens que serão inseridas, a cada loop vamos exibir o nome do jogador que esta recebendo os dados das faltas, a linha de código responsável por isso pe a seguinte:

 

Mensagem = “Digite as faltas do “ & Jogadores(i, 0)

 

Note que agora atribuimos os valores à segunda coluna, como mostra o código:

 

Jogadores(i, 1) = InputBox(Mensagem, “Faltas”)

 

Agora precisamos mudar o código do button2, que exibe os dados.

 

25 - Mude o código do Button2 para o seguinte:

 

Dim i As Integer

 

For i = 0 To UBound(Jogadores)

ListBox1.Items.Add(Jogadores(i, 0) & “ - Total de faltas: “ & Jogadores(i, 1))

Next

 

O que fizemos foi concatenar os dados da coluna 1 com os da 2.

 

26 - Execute sua aplicação:

 

27 - Clique no botão Inserir Jogadore e adicione o nome dos 11 jogadores.

 

28 - Clique no botão Adicionar Falta e adicione um número de faltas para cada jogador.

 

29 - Clique no botão Visualizar.

 

 

Como você sabe bem, tanto em um jogo de futebol, como em muitas outras situações, nós não sabemos com certeza o número de linhas que iremos precisar no nosso Array. Em um jogo de futebol podem haver até 3 substituições, o que aumentaria em 3 o número de linhas no nosso Array. No entanto, não é certeza que o treinador fará as 3 substituições que lhe cabem por direito.

 

Para esse tipo de situações, o Visual Basic oferece um Array especial, conhecido como Array Dinâmico. Um Array Dinâmico pode ser redimencionado durante a execução do programa.

 

ARRAY DINÂMICO

 

Para se criar um Array Dinâmico você precisa de alguns cuidados extras.

 

1 - Declare o Array Dinâmico sem especificar o número de elementos, como no seguinte exemplo:

 

Dim Jogadores() As String

 

2 - Antes de inserir dados no seu Array Dinâmico você precisa saber qual será o tamanho dele, você deve implementar código para isso, como por exemplo, uma caixa de diálogo que pergunta ao usuário quantos jogadores participaram da partida.

 

3 - Use o comando Redim para redimencionar seu Array em tempo de execução, usando  para isso a informação do número de elementos que descobriu.

 

Exemplo:

 

ReDim Jogadores(13)

 

Você não pode usar o Redim para mudar o tipo de dados do seu array, isso não é possível.

 

Atenção quando usar o Redim. Lembre-se que o Array começa com 0.

 

Agora você já pode usar normalmente seu Array.

 

Vamos implementar um Array Dinâmico no nosso exemplo.

 

30 - Mude a declaração do Array Jogadores para o seguinte:

 

Dim Jogadores(,) As String

 

Usamos a virgula porque nosso Array possui duas colunas. Perceba que não especificamos o número de linhas, nem o número de colunas. Com isso atendemos a regra 1 sobre os Arrays Dinâmicos.

 

31 - Para atender a regra 2, descobrindo quantas linhas serão necessárias vamos implementar no nosso programa mais uma caixa de diálogo que pergunta quantos jogadores participaram do jogo, para isso altere o código do Button1 para o seguinte:

 

        Dim Mensagem, Jogador As String

        Dim i As Integer

        Dim NumeroJogadores As Integer

 

        NumeroJogadores = InputBox(“Digite o número de jogadores que participou da partida”, “Jogadores”)

 

        ReDim Jogadores(NumeroJogadores - 1, 1)

 

        Mensagem = “Digite o nome do jogador

 

        For i = 0 To UBound(Jogadores)

            Jogador = “Jogador “ & (i + 1)

            Jogadores(i, 0) = InputBox(Mensagem, Jogador)

        Next

 

Tudo que fizemos foi criar uma variável do tipo integer que armazena o número de jogadores que participaram da partida. Adicionamos a essa variável o número digitado na caixa de diálogo através da seguinte linha de código:

 

NumeroJogadores = InputBox(“Digite o número de jogadores que participou da partida”, “Jogadores”)

 

Neste ponto sabemos o número de jogadores então usamos o Redim para redimencionar o array. Perceba que passamos como número de linhas o número de jogadores menos 1, isso porque a primeira linha do array é sempre 0, se não fizessemos isso e o usuário digitasse 2 por exemplo, teriamos 3 linhas no array, a 0, 1, 2. Como sabemos que o número de colunas desejado é 2, colocamos 1 no Redim.

 

ReDim Jogadores(NumeroJogadores - 1, 1)

 

32 - Execute sua aplicação.

 

33 - Clique em Inserir Jogadores.

 

Agora, antes de exibir a caixa que pergunta o nome dos jogadores, aparece a seguinte caixa perguntando a quantidade. Digite a quantidade e clique em OK.

 

 

O restante da aplicação funciona normalmente, só que agora com o número de jogadores informado.

 

Uma observação importante, é que quando você executa o Redim o que estiver armazenado no seu array é perdido. Dependendo das necessidades do seu programa isso pode lhe trazer muitas dores de cabeça. Para solucionar esse problema, você pode usar o Redim Preserve, que mantém os dados do array mesmo depois do seu redimensionamento.

 

O seguinte exemplo ilustra o uso do Redim Preserve:

 

Dim Jogadores(10) As String

 

Declaramos um array que pode armazenar 11 jogadores, no entando agora precisamos armazenar  13, só que sem perder o nome dos jogadores que já estão armazenados. Para isso usamos o Redim Preserve como se segue:

 

ReDim Preserve Jogadores(12)

 

O problema com o Redim Preserve é que se temos um Array com duas dimensões, como o seguinte exemplo:

 

Dim Jogadores(10,1) As String

 

Só podemos redimencionar o tamanho da última dimensão, ou seja, só podemos mudar o número de colunas.

 

Para finalizar o assunto Arrays, vamos apenas enteder o que é LBound e UBound.

 

Lembre-se que durante nossos exemplos usamos o UBound, junto com o Loop For, como se segue:

 

For i = 0 To UBound(Jogadores)

 

O Ubound como você pode perceber sempre retorna o número máximo de registros que podem ser armazenados no Array iniciando em 0. O LBound retorna o número mínimo, geralmente 0. A sintaxe dos dois são:

 

UBound(NomedoArray)

LBound(NomedoArray)

 

Conclusão:

 

Lembre-se que Arrays são usados para gerenciar grande quantidade de informação, como variáveis, você precisa declarar seus arrays antes de usá-los. Os arrays também respeitam as mesmas regras de escopo que as variáveis, ou seja, se declaradas dentro de procedimentos, ficam disponíveis apenas para o procedimento em questão.

 


Confira todos os artigos de Certificações .NET:

Quer receber novidades e e-books gratuitos?

 
 

Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434

Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208

Todos os direitos reservados, Júlio Battisti 2001-2025 ®

LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO

DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI