Notifications
Clear all

Codigo VBA gerar numeros aleatorios sem repetir (inputbox)

3 Posts
2 Usuários
0 Reactions
1,219 Visualizações
(@brunoparis)
Posts: 4
New Member
Topic starter
 

Ola Pessoal, encontrei o código abaixo na net e faz o que eu preciso, só gostaria de ter uma inputbox para colocar o valor manualmente quando executar o código (onde tem o valor 60.

sub GerarNúmerosAleatóriosSemRepetir()

    'Suponha que os números estão no intervalo B1:G10

    Const nMínimo As Long = 1
    Const nMáximo As Long = 60
    Const strDestino As String = "B1:G10"
    
    Dim n As Long
    Dim r As Long
    Dim col As Collection
    
    Randomize Timer
    
    Set col = New Collection
    On Error Resume Next
        Do
            n = Int(Rnd * nMáximo) + nMínimo
            col.Add n, CStr(n)
        Loop Until col.Count = nMáximo
        For n = 1 To nMáximo
            Range(strDestino).Cells(n) = col(n)
        Next n
    On Error GoTo 0
    
End Sub

Obrigado desde já

 
Postado : 22/05/2018 7:51 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!

Veja se atende:

Option Explicit

Sub GerarNúmerosAleatóriosSemRepetir()

    'Suponha que os números estão no intervalo B1:G10

    Const nMínimo As Long = 1
    Const strDestino As String = "B1:G10"
    
    Dim n As Long
    Dim r As Long
    Dim col As Collection
    Dim nMáximo As Long
    
    nMáximo = InputBox("Digite o número máximo: ", "Número Máximo", 60)
    Randomize Timer
    
    Set col = New Collection
    On Error Resume Next
        Do
            n = Int(Rnd * nMáximo) + nMínimo
            col.Add n, CStr(n)
        Loop Until col.Count = nMáximo
        For n = 1 To nMáximo
            Range(strDestino).Cells(n) = col(n)
        Next n
    On Error GoTo 0
    
End Sub

Abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 22/05/2018 8:51 pm
(@brunoparis)
Posts: 4
New Member
Topic starter
 

Perfeito!!
Muito Obrigado!

 
Postado : 23/05/2018 9:53 am