Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Anders (software)

2 Excel (formule) vragen

magicman
6 antwoorden
  • Ik heb 2 vragen en hoop dat één van jullie daar een antwoord op heeft
    Het gaat om een dartsscorebord in Excel.

    In cel K7 wordt terug geteld van 501 naar 0 door simpelweg de ingevoerde scores van de 501 af te trekken.
    Nu het volgende:
    Ik zou graag willen dat als in cel K7 de waarde op 0 uitkomt de legstand (in cel G7) automatisch met 1 punt word verhoogd en vervolgens dan ook bij een legstand van 3 punten de setstand (in cel I7) automatisch met 1 punt omhoog gaat.
    Dit moet kunnen alleen ben ik even kwijt hoe dit moet.

    Dan vraag 2:
    Aan de hand van de ingevoerde scores in cel O8 t/m O32 en P8 t/m P32 worden ook de statistieken per speler berekend. (aantal 100+, 140+, 180, Gemiddelde per pijl en per beurt)
    Als er nu aan een nieuwe leg word begonnen en ik hier voor de scorelijst wis verdwijnen ook alle statistieken.
    Zo kan ik dus nooit de statistieken over de hele wedstrijd bekijken maar alleen per leg.
    Kan ik er voor zorgen dat de statistieken per speler worden berekend en bewaard tot het einde van de wedstrijd ook al wis ik de scorelijst?

    Alvast bedankt voor jullie reacties.
    Cor

  • Vraag 1:
    code:
    Sub PuntenTelling()
    Dim intScore As Integer
    Dim intLegstand As Integer
    Dim intSetstand As Integer

    intScore = ActiveSheet.Range("K7").Value
    intLegstand = ActiveSheet.Range("G7").Value
    intSetstand = ActiveSheet.Range("I7").Value

    If intScore = 0 Then
    intLegstand = intLegstand + 1
    ActiveSheet.Range("G7").Value = intLegstand
    End If

    If intLegstand = 3 Then
    intSetstand = intSetstand + 1
    ActiveSheet.Range("I7").Value = intSetstand
    ActiveSheet.Range("G7").Value = 0
    End If
    End Sub

  • Ik heb in vba de code ingevoerd zoals in je voorbeeld.
    Alleen als nu de score op 0 punten uitkomt gaat niet de legstand met 1 punt omhoog maar blijft gewoon doortellen.
    Ergens voorbij de 200 komt dan de volgende foutmelding:

    Fout 28 tijdens uitvoering
    Onvoldoende stackruimte

    Doe ik nu iets fout of klopt er iets niet in de code?
    De setstand veranderd ook niet.

  • Ik heb geen idee. Hoe heb je het aanroepen van de Sub geregeld? Bij mij werkt het prima. Ik had hem voor het gemak maar even aan een button gekoppeld.
  • Zoals je hier onder kunt zien zo heb ik de macro in vba ingevoerd.

    Sub puntentelling2()
    '
    ' puntentelling2 Macro
    '
    '

    '
    Dim intScore As Integer
    Dim intLegstand As Integer
    Dim intSetstand As Integer

    intScore = ActiveSheet.Range("K7").Value
    intLegstand = ActiveSheet.Range("G7").Value
    intSetstand = ActiveSheet.Range("I7").Value

    If intScore = 0 Then
    intLegstand = intLegstand + 1
    ActiveSheet.Range("G7").Value = intLegstand
    End If

    If intLegstand = 3 Then
    intSetstand = intSetstand + 1
    ActiveSheet.Range("I7").Value = intSetstand
    ActiveSheet.Range("G7").Value = 0
    End If
    End Sub

    Vervolgens heb ik in vba bij Excel – objecten het volgende ingetypt:

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Puntentelling
    puntentelling2
    End Sub

    Ik heb namelijk al een macro die het één en ander berekend ( zoals het onder de 0 punten of op 1 punt uitkomen van de score) dus heb ik deze maar puntentelleing2 genoemd en deze vervolgens toegevoegd zoals je hier boven kunt zien.

    Of had ik de nieuwe macro kunnen toevoegen aan de reeds bestaande macro?
    Misschien gaat het daarom niet goed.

    (Weet trouwens niemand een antwoord op vraag 2?)

  • quote:
    Originally posted by Cor vd H:

    Dan vraag 2:
    Aan de hand van de ingevoerde scores in cel O8 t/m O32 en P8 t/m P32 worden ook de statistieken per speler berekend. (aantal 100+, 140+, 180, Gemiddelde per pijl en per beurt)
    Als er nu aan een nieuwe leg word begonnen en ik hier voor de scorelijst wis verdwijnen ook alle statistieken.
    Zo kan ik dus nooit de statistieken over de hele wedstrijd bekijken maar alleen per leg.
    Kan ik er voor zorgen dat de statistieken per speler worden berekend en bewaard tot het einde van de wedstrijd ook al wis ik de scorelijst?


    Je zou iets kunnen bedenken om de statistieken aan het eind van iedere leg naar een nieuw cellenbereik te kopiëren.
    In onderstaand voorbeeld wordt er even simplificerend van uitgegaan dat de statistiek van de huidige leg in C2 t/m C4 staat. Door via een command button de code te activeren worden deze waarden gekopieerd naar D2 t/m D4. Aan het eind vd volgende leg worden de statistieken gekopieerd naar E2 t/m E4 etc:

    code:

    Private Sub CommandButton1_Click()

    'leg 1
    If ActiveSheet.Range("D2").Value = "" Then
    ActiveSheet.Range("D2").Value = ActiveSheet.Range("C2")
    ActiveSheet.Range("D3").Value = ActiveSheet.Range("C3")
    ActiveSheet.Range("D4").Value = ActiveSheet.Range("C4")
    'leg 2
    ElseIf ActiveSheet.Range("D2").Value > 0 And ActiveSheet.Range("E2").Value = "" Then
    ActiveSheet.Range("E2").Value = ActiveSheet.Range("C2")
    ActiveSheet.Range("E3").Value = ActiveSheet.Range("C3")
    ActiveSheet.Range("E4").Value = ActiveSheet.Range("C4")
    'leg 3
    ElseIf ActiveSheet.Range("E2").Value > 0 And ActiveSheet.Range("F2").Value = "" Then
    ActiveSheet.Range("F2").Value = ActiveSheet.Range("C2")
    ActiveSheet.Range("F3").Value = ActiveSheet.Range("C3")
    ActiveSheet.Range("F4").Value = ActiveSheet.Range("C4")

    End If
    End Sub


    Zo worden de statistieken dus per leg bewaard (ik ben geen darter en heb dus geen flauw idee hoeveel legs er kunnen zijn; bovenstaande methode kan ietwat uit de klauwen lopen)

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.