Code werkt niet onder alle omstandigheden

Status
Niet open voor verdere reacties.

Oude leerling

Gebruiker
Lid geworden
30 aug 2010
Berichten
566
Geacht forum ,

Ik heb onderstaande code gekregen van een van u forumleden en
heb nu ontdekt dat hij niet onder alle omstandigheden werkt. (zie de bijlage)

Sub optel()
Dim lr As Long, x As Long
lr = Range("E" & Rows.Count).End(xlUp).Row
For x = 3 To 4
mystring = Range("C" & x) 'naam op C3 en C4
With Sheets("blad2")
myrow = .Cells.Find(mystring).Row
.Range("E" & myrow) = .Range("E" & myrow) + 1 'aantal gespeelde wedstrijden ophogen
.Range("D" & myrow) = .Range("D" & myrow) + Range("F" & x).Value 'aantal behaalde aantal punten bijwerken
.Range("C" & myrow) = (.Range("C" & myrow) * (.Range("E" & myrow) - 1) + Range("E" & x)) / .Range("E" & myrow)
End With
Range("E" & x).ClearContents
Next
End Sub

Jaap
 
Laatst bewerkt:
Dat niet alleen: ook vergeten om je code op te maken met de CODE tag :).
 
OctaFish , ik weet niet hoe ik een code tussen tags moet krijgen

Maar een beter leesbare code vind u in de macro behorende bij de bijlage

Jaap
 
Even gezocht op internet



Code:
Sub optel()
Dim lr As Long, x As Long
lr = Range("E" & Rows.Count).End(xlUp).Row
    For x = 3 To 4
        mystring = Range("C" & x)    'naam op C3 en C4
        With Sheets("blad2")
            myrow = .Cells.Find(mystring).Row
            .Range("E" & myrow) = .Range("E" & myrow) + 1              'aantal gespeelde wedstrijden ophogen
            .Range("D" & myrow) = .Range("D" & myrow) + Range("F" & x).Value 'aantal behaalde aantal punten bijwerken
            .Range("C" & myrow) = (.Range("C" & myrow) * (.Range("E" & myrow) - 1) + Range("E" & x)) / .Range("E" & myrow)
        End With
        Range("E" & x).ClearContents
    Next
End Sub
[\CODE]
 
De slash in de eindtag moet andersom, daarom doet-ie het niet. Handiger is natuurlijk om de tekst te selecteren en de knop (#) te gebruiken. Dat de code in het bestand zelf correct is, maakt voor het lezen op deze pagina overigens niet uit :).
 
Hierbij dan nog een poging

Code:
Sub optel()
Dim lr As Long, x As Long
lr = Range("E" & Rows.Count).End(xlUp).Row
    For x = 3 To 4
        mystring = Range("C" & x)    'naam op C3 en C4
        With Sheets("blad2")
            myrow = .Cells.Find(mystring).Row
            .Range("E" & myrow) = .Range("E" & myrow) + 1              'aantal gespeelde wedstrijden ophogen
            .Range("D" & myrow) = .Range("D" & myrow) + Range("F" & x).Value 'aantal behaalde aantal punten bijwerken
            .Range("C" & myrow) = (.Range("C" & myrow) * (.Range("E" & myrow) - 1) + Range("E" & x)) / .Range("E" & myrow)
        End With
    Next
   Range("E3:E4").ClearContents
End Sub
 
Wat is de zin van varabele lr als je hem niet gebruikt ?

Code:
Sub M_overzicht()
  For j = 3 To 4
    With Blad2.columns(1).Find(Blad1.cells(j,3))
            .offset(,4) = .offset(,4)+1   '   aantal partijen 
            .offset(,3) = .offset(,3)+1   '    aantal punten
            .offset(,2) = .offset(,3)/.offset(,4)   ' moyenne
    End With
  Next

  Blad1.Range("E3:E4").ClearContents
End Sub

Als je in verschillende werkbladen werkt: verwijs voor iedere 'Range' naar het werkblad waarvan die Range deel uitmaakt.
 
Laatst bewerkt:
snb ,

Jou code heeft mij de ogen geopend.
De eerder toegeleverde code wiste voor de opdracht "Next" de waarde in cel E3
maar omdat in E3 en E4 formules staan , wijzigde zich hierdoor ook de waarde in E4 en klopte de uitslag niet meer
Jou code wiste E3 en E4 na "Next" , en dat was de oplossing.


End With
Range("E" & x).Resize(, 2).ClearContents 'Oud
Next
End Sub

End With
Next
Blad1.Range("E3:E4").ClearContents 'Nieuw
End Sub

Alles werkt nu perfect en ik heb het biljardprogramma nu helemaal klaar. (denk ik)

De potlootjes en papiertjes kunnen nu weg

Vriendelijke groet en een fijn weekend,
Jaap
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan