Avatar billede ullum Praktikant
01. februar 2005 - 17:04 Der er 2 kommentarer og
1 løsning

område rykkes

jeg har denne her
Option Base 1
Const OffsetRække = 1      'Antallet af rækker over tabelområdet (inkl. overskrifter)
Const OffsetKolonne = 1    'Antallet af kolonner til venstre for tabelområdet (inkl. overskrifter)
Const MaksDeltagere = 9    'Det maksimale antal deltagere, der er plads til i tabellen
                            'Har intet med det aktuelle antal deltagere at gøre

Private Sub CommandButton1_Click()
Dim Deltager1, Deltager2, Tæller, AntalMulig As Integer
Dim MuligModstander(MaksDeltagere)
Dim MuligModstander2(MaksDeltagere - 2)
Const MaksTæller = 10000

For i = OffsetRække + 1 To OffsetRække + MaksDeltagere
    For j = OffsetKolonne + 1 To OffsetKolonne + MaksDeltagere
        If Worksheets("Kampskema").Cells(i, j) = "a" Or Worksheets("Kampskema").Cells(i, j) = "b" Then
            Worksheets("Kampskema").Cells(i, j) = "X"
        End If
    Next j
Next i

AntalDeltagere = 0
For i = 1 To MaksDeltagere
    If Not IsEmpty(Worksheets("Kampskema").Cells(OffsetRække + i, OffsetKolonne)) Then
        AntalDeltagere = AntalDeltagere + 1
    End If
Next i

Randomize
Tæller = 0
Do Until Tæller > MaksTæller Or AntalMulig > 0
    Deltager1 = Int((AntalDeltagere * Rnd) + 1)
    AntalMulig = 0
    For i = 1 To AntalDeltagere
        If IsEmpty(Worksheets("Kampskema").Cells(Deltager1 + OffsetRække, i + OffsetKolonne)) And Deltager1 <> i Then
            AntalMulig = AntalMulig + 1
            MuligModstander(AntalMulig) = i
        End If
    Next i
    Tæller = Tæller + 1
Loop
If AntalMulig > 0 Then
    Deltager2 = MuligModstander(Int((AntalMulig * Rnd) + 1))
    Worksheets("Kampskema").Cells(Deltager1 + OffsetRække, Deltager2 + OffsetKolonne) = "a"
End If

Tæller = 0
For i = 1 To AntalDeltagere
    If Deltager1 <> i And Deltager2 <> i Then
        Tæller = Tæller + 1
        MuligModstander2(Tæller) = i
    End If
Next i

AntalMulig = 0
Tæller = 0
Do Until Tæller > MaksTæller Or AntalMulig > 0
    Deltager3 = MuligModstander2(Int(((AntalDeltagere - 2) * Rnd) + 1))
    AntalMulig = 0
    For i = 1 To AntalDeltagere - 2
        If IsEmpty(Worksheets("Kampskema").Cells(Deltager3 + OffsetRække, MuligModstander2(i) + OffsetKolonne)) And Deltager3 <> MuligModstander2(i) Then
            AntalMulig = AntalMulig + 1
            MuligModstander(AntalMulig) = MuligModstander2(i)
        End If
    Next i
    Tæller = Tæller + 1
Loop
If AntalMulig > 0 Then
    Deltager4 = MuligModstander(Int((AntalMulig * Rnd) + 1))
    Worksheets("Kampskema").Cells(Deltager3 + OffsetRække, Deltager4 + OffsetKolonne) = "b"
End If

End Sub

Private Sub CommandButton2_Click()

Offset = OffsetRække + 2
For j = OffsetKolonne + 1 To OffsetKolonne + MaksDeltagere
    For i = Offset To OffsetRække + MaksDeltagere
        Worksheets("Kampskema").Cells(i, j).ClearContents
    Next i
    Offset = Offset + 1
Next j

End Sub


og den har jeg fået fra http://www.eksperten.dk/spm/584659

Nu vil jeg gerne rykke området eksempelvis 4 til højre og 4 ned
men jeg får så en fejlmelding.

jeg starter med 60p men er der brug for mere så sig til.
Hvis du heller vil have arket så læg en mailadr
Avatar billede jkrons Professor
01. februar 2005 - 17:13 #1
Hvilken fejlmelding?
Avatar billede ullum Praktikant
01. februar 2005 - 17:18 #2
out of range
men jeg fik det til at virke ved at sætte offsets rigtig, jeg var nok for træt igår
jeg prøver nu at implementere det i et andet ark men nu hopper kæden af, jeg ved ikke engang hvad jeg skal spørge om
Avatar billede ullum Praktikant
01. februar 2005 - 17:24 #3
.-(
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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