Jump to content

Recommended Posts

Posted

Boas

Uso esse gerador para fins diversos e é muito bom, mas como fazer o sorteio acontecer em determinado intervalo, uma vez que sempre roda a partir do intervalo A2.

Sub Sorteio_de_Numeros()

Dim a, b, c(99)

s = 10

d = 50

For lin = 2 To s + 1

For a = 1 To 99

c(a) = a

Next

For a = 1 To d

b = 1 + Int(Rnd * (99 - b))

Cells(lin, a).Select

Cells(lin, a).Value = c(b)

c(b) = c(99 - b)

Next

Next

Range("A1").Select

End Sub

Cumps

Posted (edited)

boas

amigo eu vejo aqui duas situações que não estarão correctas:

1. For a = 1 To 99

c(a) = a

Next

.......' o c(a) é sempre 99, por isso o Next deveria estar talvez junto aos outros Nexts.

2. For a = 1 To d

b = 1 + Int(Rnd * (99 - b))

Cells(lin, a).Select

Cells(lin, a).Value = c(b)

c(b) = c(99 - b)

Next

....' aqui tens outro for com a variavel «a» que coloca o valor da variavel com valor 1 não sei se será isto que tu queres.

Edit: Thoga31 peço desculpa não sabia que já tinhas respondido, colocas-te o post enquanto eu escrevi.

cumps

acao

Edited by acao
Posted

Boas

Na verdade o código foi postado com algumas incorreções, segue o código com as correções.

O que preciso é indicar um intervalo previamente informado, que não seja fixo, tipo F5:M5 ou outro qualquer.

Sub Sorteio_de_Numeros()

Dim a, b, c(98)

s = 1

d = 8

For lin = 2 To s + 1

For a = 1 To 98

c(a) = a

Next

For a = 1 To d

b = 1 + Int(Rnd * (98 - b))

Cells(lin, a).Select

Cells(lin, a).Value = c(b)

c(b) = c(99 - b)

Next

Next

Range("D8").Select

End Sub

Cumps

Posted

boas

o erro está aqui:

For lin = 2 To s + 1

assim só faz uma linha porque 2 = 2

faz assim:

s= 10 ' maior que 2 ou seja as linhas que queres que preencha,

For lin = 2 To s

cumps

acao

Posted (edited)

Boas

Acao

O código foi escrito para que preencha apenas uma linha com os resultados. O que preciso é de alguma instrução para atribuir determinada linha para mostrar o resultado. Por exemplo mostrar o resultado no intervalo AA4:AH4

Cumps

Edited by Pennafortt
Posted

boas

tens aqui.

Dim a, b, c(98)

s = 1

d = 8

Dim vImpNum As Range

Set vImpNum = Range("AA4:AH4")

For lin = 1 To s

For a = 1 To 98

c(a) = a

Next

For a = 1 To d

b = 1 + Int(Rnd * (98 - b))

'Cells(lin, a).Select

vImpNum.Cells(lin, a).Value = c(b)

c(b) = c(99 - b)

Next

Next

Range("D8").Select

cumps

acao

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.