About Me

A minha foto
JRod - PORTUGAL
Microsoft [MVP] - Excel (10º ano consecutivo)
Ver o meu perfil completo
Com tecnologia do Blogger.

Seguidores

Estatisticas

Free Blog Counter

eXTReMe Tracker
2007-08-17
A propósito de uma questão (adaptada) que me foi colocada, via e-mail: "É possivel fazer um sorteio com uma apresentação onde eu veja os números rodando em cada caixa até parar no número sorteado? Ou seja, o programa estará gerando os números randomicamente num determinado período. Digamos que para gerar a primeira dezena ele ficará randomicamente num loop de 100 voltas e o centésimo número gerado será a primeira dezena sorteada (unidades), e assim sucessivamente até a última dezena (dezenas, centenas e milhares). Porém eu gostaria de ver cada um dos números sendo exibidos mesmo que em frações de milésimos.É possível?", aproveitei um segmento de código que "apanhei" na net e introduzi-lhe algumas alterações, para obter o efeito desejado.
 
A ideia, será a seguinte, nas duas imagens:
 
com a visualização de um "rollup" de números aleatórios até à sua fixação, seguindo-se a ordem descrita:

O Código:

Sub Macro1()
    Dim i, z, choice, balls(10)
    
    Range("A17").Select 'Para referência da ActiveCell

    
    For i = 0 To 9
        balls(i) = i
    Next
    
    Randomize Timer
    
    For i = 4 To 1 Step -1 ' da direita para a esquerda
        For z = 100 To 1 Step -1
            choice = 1 + Int((Rnd * (10 - 1)))
            ActiveCell.Offset(0, i - 1).Value = balls(choice)
        Next z
        balls(choice) = 0
    Next
End Sub

Tópicos relacionados: