Avatar billede moltov Nybegynder
15. februar 2002 - 08:52 Der er 1 kommentar og
2 løsninger

Makro til Excel men lavet via Visual Basic

Et spørgsmål. Jeg har fået et prg. der kan lave tilfældige tal, men der ikke må tage tallet mere end en gang. Men jeg bliver ved med at få fejl. Sådan ser den indtil videre ud:

Bingo Makro
'Makro indspillet 16/2/97 af Niels Thommesen
'
'Anbringer tal rækken 1 - 90 i tilfældig rækkefølge
'
'
Sub Bingo_makro()
Dim x, y, Count, z As Integer
Count = 0
Dim t(1 To 90) As Integer
For x = 1 To 90
t(x) = x
Next x
Range("A1").Select
Randomize 'Ellers får man samme resultat hver gang!
Do
    y = Int((90 * Rnd) + 1)
    For x = 1 To 90
        If y = t(x) Then
            t(x) = 0            'Medfører at hvert tal kun optræder 1 gang
            Count = Count + 1
            ActiveCell.Val = y
            ActiveCell.Offset(1, 0).Select
            For z = 10 To 80 Step 10 'Udskrivningsrutine (10 x 9)
                If Count = z Then
                ActiveCell.Select
                ActiveCell.Offset(-10, 1).Select
                End If
            Next z
        End If
    Next x
Loop Until Count = 90
End Sub

Kan i hjælpe mig?
Avatar billede devman Nybegynder
15. februar 2002 - 09:24 #1
Prøv denne
Sub Bingo_makro()

Dim x, y, Count, z, nRow, nCol As Integer
Count = 0
Dim t(1 To 90) As Integer
For x = 1 To 90
t(x) = x
Next x
nRow = 1
nCol = 1
Range("A1").Select
Randomize 'Ellers får man samme resultat hver gang!
For z = 1 To 90
    Do
        y = Int((90 * Rnd) + 1)
        For x = 1 To 90
            If y = t(x) Then
                t(x) = 0            'Medfører at hvert tal kun optræder 1 gang
                Count = Count + 1
                Exit Do
            End If
        Next x
    Loop Until Count = 90
    If nRow > 10 Then
        nRow = 1
        nCol = nCol + 1
    End If
    Me.Range(Chr(64 + nRow) & nCol).Select
    ActiveCell.Value = y
    nRow = nRow + 1
Next z

End Sub
Avatar billede moltov Nybegynder
15. februar 2002 - 09:49 #2
Den siger nu:

Compile Error
Invalid Use Of Me Keyword.

Desværre :-/

VH
Jens Moltov
Avatar billede tipsen Nybegynder
16. februar 2002 - 02:47 #3
Her er en lidt kortere udgave, som løser dit problem:
Sub Bingo_makro()
Dim tal, Count As Integer
Dim used(1 To 90) As Boolean

Range("A1").Select
Randomize 'Ellers får man samme (tilfældige) resultat hver gang!

Do
    tal = Int((90 * Rnd) + 1)
    If Not used(tal) Then
        used(tal) = True            'Medfører at hvert tal kun optræder 1 gang
        ActiveCell.Value = tal
        ActiveCell.Offset(0, 1).Select
        If ((ActiveCell.Column - 1) Mod 10 = 0) Then
            ActiveCell.Offset(1, -10).Select
        End If
        Count = Count + 1
    End If
Loop Until Count = 90
End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester