29. november 2009 - 20:14Der er
1 kommentar og 1 løsning
Løbende "summer" ?
Jeg har følgende kode og den kører fint, jeg får udskrevet pointene fra den enkelte runde og det passer fint.
Jeg vil dog gerne have den til at lave "løbende" summer således pointene hele tiden bliver lagt sammen.
fx. runde 3 = Point runde 1 + runde 2 + runde 3.
Koden er som følger:
Option Explicit
Public Sub obl4()
Dim rngStil As Range Dim rngKamp As Range Dim AntalHold As Integer Dim i As Integer Dim resultat As String, stregpos As String, HjmHoldMål As Integer, UdeHoldMål As Integer Dim j As Integer Dim runde As Integer Dim hold_check As Boolean
Worksheets.Add().Name = "still"
Set rngStil = Worksheets("still").Range("A4")
Set rngKamp = ThisWorkbook.Worksheets("kampprogram").Range("A4").CurrentRegion
'Find antal hold i ligaen - fratrækker én pga. overskriftsrække AntalHold = rngStil.Cells(1, 2).CurrentRegion.Rows.Count - 1
'Der loopes over alle kampene For i = 2 To rngKamp.Rows.Count
'Hvis der ikke er flere resultater afbrydes for-løkken If rngKamp.Cells(i, 9) = "" Then Exit For
'Indlæs resultat, find "-", indlæs mål for og i mod resultat = rngKamp.Cells(i, 9).Value stregpos = InStr(resultat, "-") HjmHoldMål = CInt(Left(resultat, stregpos - 1)) UdeHoldMål = CInt(Right(resultat, Len(resultat) - stregpos))
'Der loopes over alle holdene i stillingen For j = 1 To AntalHold hold_check = False If rngStil.Cells(j + 1, 1) = rngKamp.Cells(i, 6) Then hold_check = True
If hold_check = True Then runde = CInt(rngKamp.Cells(i, 2).Value)
If hold_check = True And HjmHoldMål > UdeHoldMål Then rngStil.Cells(j + 1, runde + 1).Value = 3
If hold_check = True And HjmHoldMål = UdeHoldMål Then rngStil.Cells(j + 1, runde + 1).Value = 1
If hold_check = True And HjmHoldMål < UdeHoldMål Then rngStil.Cells(j + 1, runde + 1).Value = 0
'Næste hold i stillingstabellen Next j
'Næste kamp i kampoversigten Next
' jeg gør det samme for udeholdet
For i = 2 To rngKamp.Rows.Count
'Hvis der ikke er flere resultater afbrydes for-løkken If rngKamp.Cells(i, 9) = "" Then Exit For
'Indlæs resultat, find "-", indlæs mål for og i mod resultat = rngKamp.Cells(i, 9).Value stregpos = InStr(resultat, "-") HjmHoldMål = Int(Left(resultat, stregpos - 1)) UdeHoldMål = Int(Right(resultat, Len(resultat) - stregpos))
'Der loopes over alle holdene i stillingen For j = 1 To AntalHold hold_check = False 'udeholdet If rngStil.Cells(j + 1, 1) = rngKamp.Cells(i, 7) Then hold_check = True
If hold_check = True Then runde = CInt(rngKamp.Cells(i, 2).Value)
If hold_check = True And HjmHoldMål > UdeHoldMål Then rngStil.Cells(j + 1, runde + 1).Value = 0
If hold_check = True And HjmHoldMål = UdeHoldMål Then rngStil.Cells(j + 1, runde + 1).Value = 1
If hold_check = True And HjmHoldMål < UdeHoldMål Then rngStil.Cells(j + 1, runde + 1).Value = 3
Jeg har ændret kodenn lidt således der kommer en runde 0 med også. Dette burde gøre det lettere at bruge R1C1 til at finde summerne løbende? - hvis jeg har ret?
Option Explicit
Public Sub obl4()
Dim rngStil As Range Dim rngKamp As Range Dim AntalHold As Integer Dim i As Integer Dim resultat As String, stregpos As String, HjmHoldMål As Integer, UdeHoldMål As Integer Dim j As Integer, k As Integer, l As Integer Dim runde As Integer Dim hold_check As Boolean
'slå advsarsler fra Application.DisplayAlerts = False On Error Resume Next
'sletter arket still hvis det skulle være der Sheets("still").Delete 'slå advarsler til Application.DisplayAlerts = True On Error GoTo 0 'tilføjer det ny ark Sheets.Add().Name = "still"
Set rngStil = Worksheets("still").Range("A4")
Set rngKamp = ThisWorkbook.Worksheets("kampprogram").Range("A4").CurrentRegion
'Find antal hold i ligaen - fratrækker én pga. overskriftsrække AntalHold = rngStil.Cells(1, 2).CurrentRegion.Rows.Count - 1
For k = 1 To AntalHold rngStil.Offset(k, 1).Value = 0
'Der loopes over alle kampene For i = 2 To rngKamp.Rows.Count
'Hvis der ikke er flere resultater afbrydes for-løkken If rngKamp.Cells(i, 9) = "" Then Exit For
'Indlæs resultat, find "-", indlæs mål for og i mod resultat = rngKamp.Cells(i, 9).Value stregpos = InStr(resultat, "-") HjmHoldMål = CInt(Left(resultat, stregpos - 1)) UdeHoldMål = CInt(Right(resultat, Len(resultat) - stregpos))
'Der loopes over alle holdene i stillingen For j = 1 To AntalHold hold_check = False If rngStil.Cells(j + 1, 1) = rngKamp.Cells(i, 6) Then hold_check = True
If hold_check = True Then runde = CInt(rngKamp.Cells(i, 2).Value)
If hold_check = True And HjmHoldMål > UdeHoldMål Then rngStil.Cells(j + 1, runde + 2).Value = 3
If hold_check = True And HjmHoldMål = UdeHoldMål Then rngStil.Cells(j + 1, runde + 2).Value = 1
If hold_check = True And HjmHoldMål < UdeHoldMål Then rngStil.Cells(j + 1, runde + 2).Value = 0
'Næste hold i stillingstabellen Next j
'Næste kamp i kampoversigten Next
' jeg gør det samme for udeholdet
For i = 2 To rngKamp.Rows.Count
'Hvis der ikke er flere resultater afbrydes for-løkken If rngKamp.Cells(i, 9) = "" Then Exit For
'Indlæs resultat, find "-", indlæs mål for og i mod resultat = rngKamp.Cells(i, 9).Value stregpos = InStr(resultat, "-") HjmHoldMål = Int(Left(resultat, stregpos - 1)) UdeHoldMål = Int(Right(resultat, Len(resultat) - stregpos))
'Der loopes over alle holdene i stillingen For j = 1 To AntalHold hold_check = False 'udeholdet If rngStil.Cells(j + 1, 1) = rngKamp.Cells(i, 7) Then hold_check = True
If hold_check = True Then runde = CInt(rngKamp.Cells(i, 2).Value)
If hold_check = True And HjmHoldMål > UdeHoldMål Then rngStil.Cells(j + 1, runde + 2).Value = 0
If hold_check = True And HjmHoldMål = UdeHoldMål Then rngStil.Cells(j + 1, runde + 2).Value = 1
If hold_check = True And HjmHoldMål < UdeHoldMål Then rngStil.Cells(j + 1, runde + 2).Value = 3
'Næste hold i stillingstabellen Next j
'Næste kamp i kampoversigten Next i
For l = 0 To runde rngStil.Offset(0, l + 1).Value = "runde " & l Next
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.