Tutorial 01 – Básico de Simulação no
VBA do Excel Este
tutorial contém as habilidades básicas do VBA do Excel necessárias para se
criar simulações. Os iniciantes que desejam aprender a programação de
simulações usando o VBA do Excel são incentivados a percorrerem de cabo a
rabo a documentação completa se ainda não fizeram isto. Este
tutorial é o pré-requisito do Tutorial 02 – Simulação Baseada no VBA do Excel.
Este documento contém informação sobre os seguintes tópicos.
Declarar
um Array com a Declaração Dim
Redimensionando
um Array com a Declaração Redim
Microsoft Support site ou a seção Ajuda (Help) do VBA do Excel no seu computador contém exemplos
compreensivos da maioria das coisas cobertas neste tutorial. Para mais
informação, por favor refira-se a elas. Criando e Administrando
Array Microsoft Support O exemplo seguinte atribui valores ao array e mostra todos os valores numa
caixa de mensagem: Dim Arr(5)
Arr(1) = "Jan"
Arr(2) = "Fev"
Arr(3) =
"Mar" Arr(4) = "Abr" Arr(5) = "Maio" MsgBox Arr(1) &
"-" & Arr(2) & "-" & Arr(3) &
"-" & Arr(4) & "-" & Arr(5) End Sub
Trocando o Redim Arr(6) com Redim
Preserve Arr(6), todos os valores permanecerão. Por exemplo:
Dim Arr(2,2) Daí, então, atribuímos os valores para o array.
Nós tratamos primeiro a dimensão como o ano e a segunda dimensão como a venda
de produto: Encontrar
o Tamanho de um Array |
Estruturas
de Decisão - IF e Select Case
If Idade >= 18 Then Status =
"Adulto" Você também pode usar um bloco de múltiplas linhas na declaração If como segue: If Idade >=
18 Then Note que no caso do bloco de múltiplas linhas, a declaração End If é necessária, onde o caso linha
única não.
IF ... Then
... Else If Idade >=22
Then End If Novamente, note que a declaração End If é necessária neste caso também pois
existe mais do que um bloco de declarações.
IF ... Then ... ElseIf If Idade >= 18 and Idade < 22 Then Note que a última condição sob Else é, implicitamente, Idade < 18.
Select Case Grau
For i = 1 to 10
Neste exemplo, i é a variável contadora de 1 até 10. O processo de looping
enviará valor à primeira coluna da activesheet e imprime i (o qual vai de 1 a
10) para a linha 1 até a 10 daquela coluna.
For i = 1 to 10 Step
2 Este processo de laço imprimirá valores com um incremento de 2 na linha 1, 3,
5, 7 e 9 na coluna um.
Você pode também decrementar no laço atribuindo um valor negativo após a
palavra Step. For i = 10 to 1 Step
-2 Este processo do laço imprimirá valores com um incremento de -2 começando do 10 na linha 10, 8, 6,
4 e 2 na coluna um.
i = 1 Este processo de laço conduzirá ao mesmo resultado que o exemplo das
estruturas For ... Next.
i = 1
Do ... Loop Until i = 1
Ordenando
Números num Array
Esta caixa de mensagem mostra o array depois do ordenamento Sub obterOrdenamento( ) Encontrar
os Valores Máximo e Mínimo num Array
Para
encontrar os valores, máximo e mínimo, num array, o array precisa ser
ordenado. Uma vez ordenado, encontrar o máximo e o mínimo é muito
simples. Usando o exemplo anterior para obter o máximo e o mínimo, você
pode simplesmente atribuir o índice limite superior e 1, respectivamente para
o array ordenado seguinte: arr(UBound(arr)) Note que UBound(arr) será 5 pois existem 5 elementos (iniciando no índice 1) no
array. Usamos 1 como o índice inferior pois não atribuímos qualquer
valor ao índice 0.
MsgBox "Max: " &
arr(UBound(arr)) & vbCrLf & "Min: " &
arr(1) & vbCrLf
Ordenamento
Duplo – O segredo de Refazer o Experimento Sem Trocas 1. Atribua números aleatórios a
cada um dos elementos na amostra (nomes neste caso). 2. Ordenar os nomes baseados
nos números aleatórios. 3. Escolha os primeiros três
nomes do resultado.
Neste
caso, George, Chris, e Bobby são selecionados pois, eles são os primeiros 3
nomes após o ordenamento. Sub RefazerExperimento()
Dim xTemp As Double End Sub
A sub OrdenamentoDuplo ordena array y (os nomes) baseado no array x (os
números aleatórios). O procedimento sub RefazerExperimento retorna três nomes únicos da amostra numa
caixa de mensagem.
|