Bom dia pessoal!!! Estou com um problema na seguinte macro:
Sub GerarNumerosAleatoriosSemRepeticao()
02 Dim i As Integer
03 Dim j As Integer
04 Dim bRandomOk As Boolean
05 Dim valor_aleatorio As Integer
06 Dim valor_maior As Integer
07 Dim total_numeros_gerados As Integer
08 Dim total_numeros_para_gerar As Integer
09 Dim iControleGerar As Integer
10 Dim iColunaCelula As Integer
11
12 valor_maior = 60 'Informe o maior número que poderá ser gerado
13 total_numeros_para_gerar = 20 'Informe a quantidade de números aleatórios que deseja gerar
14 total_numeros_gerados = 0
15 iLinhaCelulaInicial = 2 'Informe a linha da primeira célula que será escrito o número
16 iColunaCelula = 2 'Informe a coluna. Exemplo: Coluna B = 2
17 iControleGerar = total_numeros_para_gerar + iLinhaCelulaInicial - 1
18
19 'Gera quantos números forem indicados na variável 'total_numeros_gerados'
20 For i = iLinhaCelulaInicial To iControleGerar
21 total_numeros_gerados = total_numeros_gerados + 1
22
23 'Fica executando a geração de um novo número enquanto houver duplicidade
24 Do
25 'Utilize a condição abaixo para verificar se ainda existem números possíveis a serem gerados
26 'Porque se i for maior que o valor limite, significa que todos os números já saíram. Então, sai do loop
27 If valor_maior < total_numeros_gerados Then
28 valor_aleatorio = 0
29 bRandomOk = True
30 Exit Do
31 End If
32
33 'Gera um novo número
34 Randomize 'Sempre utilize esta função antes de chamar Rnd
35 valor_aleatorio = Int((valor_maior * Rnd) + 1)
36 bRandomOk = True
37
38 'Verifica se já saiu este número
39 For j = iLinhaCelulaInicial To i
40 If Cells(j, iColunaCelula).Value = valor_aleatorio Then
41 bRandomOk = False
42 Exit For
43 End If
44 Next j
45
46 Loop While bRandomOk = False
47
48 'Escreve o número na célula
49 Cells(i, iColunaCelula).Value = valor_aleatorio
50 Next i
51
52 MsgBox "valor encontrado", vbInformation
53
54 End Sub
Ela funciona mais ou menos como eu gostaria, mas não estou conseguindo fazer ela gerar estes números até uma determinada célula ( efetua a soma dos números gerados) do Excel atingir valor igual ou maior da outra célula (determinado por mim) ou ainda reiniciar geração de novos números se eu acionar um botão que coloquei na planilha.
Alguém pode me ajudar a resolver isso?
Postado : 17/01/2017 6:59 am