OS MELHORES VÍDEOS

 

Pesquisar

quinta-feira, 8 de agosto de 2013

Matriz VBA Meses do Ano

Dedicado ao 

Michael Douglas Lima



Arrays

Quando precisamos armazenar/trabalhar um grupo de dados que tenha o mesmo tipo e nome, devemos criar uma matriz para essa situação ao invés de declararmos várias variáveis para este grupo.  Criando uma matriz (array no VBA) o seu índice permite identificar os itens.  Ex : meses do ano, dias da semana. Abaixo seguem dois exemplos que executam a mesma lógica no VBA. 






1 - Este usa no seu código sete (7) variáveis para os dias da semana. Poderia ser outro caso, como guardar o nome de 10000 empresas.


2 - Já este utiliza apenas um array (matriz) com 7 posições (0 a 6):
Nota-se que quando você define um tipo array, o seu primeiro índice é o zero. Sendo assim sDias do exemplo anterior vai de 0 a 6. Que é o mesmo que Dim sDia(0 To 6) As String, ou podemos definir o seu índice inicial, por exemplo : Dim sDia(1 To 7) As String.

Redimensionando o array
E quando não sabemos qual será o tamanho do array ... por exemplo podemos receber uma lista mensal com todas as vendas daquele período que foi diferente do período anterior. Então teremos que automatizar esse processo para que o array tenha a quantidade certa. Para isso podemos redimensionar o array usando o comando Redim. Mas não podemos definir um tamanho para ela na declaração da mesma : Dim iQtdFuncionario() As Interger, não tem valor entre as "()"
O código acima tem um problema, usamos o ReDim duas vezes e dessa forma o segundo ReDim apaga o conteúdo o primeiro. Para resolver isso usamos a expressão Preserver após o comando ReDim. Assim você  pode redimensionar a sua matriz é manter os valores nela já existentes. 
Ex:
Continuando o processo a partir de onde "parou" a dimensão anterior.  

Arrays Multidimensionais
Além de todas as propriedades de um array já visto anteriormente. O array também pode ter mais de uma dimensão (ex : Dim sArr (2,2) as string).

A figura abaixo mostra um array de 3 dimensões (0 to 2, 0 to 2), para guardar os dados da tabelaFuncionário. O primeiro parâmetro do array sFunc( 2 , ) indica a quantidade de registros/linhas a serem lidos. O segundo sFunc (, 2indica as dimensões/colunas. Neste caso a primeira dimensão (coluna) guarda o Funcionário, a segunda a Empresa e o terceira o Salário


Otimizando o exemplo anterior, a macro ficaria assim:




Assista o Vídeo



2 comentários:

  1. Como fazer em VBA a seguintes distribuição:
    25 números numa matriz 10 x 20 sendo que os números não pode haver repetição por linha. Na matriz 10x20 há 200 posição. 200/25 = 8. portanto cada número
    aparecerão 8 vezes dentro da matriz

    ResponderExcluir
  2. Este comentário foi removido pelo autor.

    ResponderExcluir