habe trotz das der Teil mit den 9er funktioniert es umgeschrieben und eine weitere Sub dazu erstellt. Teste mal (das mit den Kränzen dürfte jetzt auch passen)
Code:
Sub prcUebernahme()
Dim lngLetzteZeile As Long, lngC As Long, lng9er As Long, lngKranz As Long
Dim rngName As Range, rngGefuellt As Range
Dim strZelle As String, str9er As String, strKranz As String
With Worksheets("Spiele")
lngLetzteZeile = .Cells(69, 1).End(xlUp).Row 'von .Rows.Count auf 69 geändert :-(
Set rngGefuellt = Worksheets("Startblatt").Range("F5:T22").Find(What:="*", lookat:=xlWhole, LookIn:=xlValues, _
searchorder:=xlByColumns, SearchDirection:=xlPrevious)
For lngC = 9 To lngLetzteZeile
Set rngName = Worksheets("Startblatt").Columns(2).Find(.Cells(lngC, 1), lookat:=xlWhole, LookIn:=xlValues, searchorder:=xlByRows)
If Not rngName Is Nothing Then
If Not rngGefuellt Is Nothing Then
If rngGefuellt.Column = 20 Then MsgBox "Alle Spalten sind gefüllt!", vbInformation: Exit For
Worksheets("Startblatt").Cells(rngName.Row, rngGefuellt.Column + 1).Value = .Cells(lngC, 13).Value
Else
Worksheets("Startblatt").Cells(rngName.Row, 6).Value = .Cells(lngC, 13).Value
End If
strZelle = Mid(Worksheets("Startblatt").Cells(rngName.Row, 21).FormulaLocal, 13, _
InStr(3, Worksheets("Startblatt").Cells(rngName.Row, 21).FormulaLocal, ">") - 13)
Worksheets("Daten").Range(strZelle).Value = Worksheets("Daten").Range(strZelle).Value + .Cells(lngC, 12).Value
Worksheets("Daten").Range(strZelle).Offset(, 1).Value = Worksheets("Daten").Range(strZelle).Offset(, 1).Value + .Cells(lngC, 9).Value
If .Cells(lngC, 10) <> 0 Then
strKranz = strKranz & Range(strZelle).Offset(, 3).Address & "::" & .Cells(lngC, 10).Value * 3 & ","
lngKranz = lngKranz + .Cells(lngC, 10).Value * 3
End If
If .Cells(lngC, 11) <> 0 Then
str9er = str9er & Range(strZelle).Offset(, 2).Address & "::" & .Cells(lngC, 11).Value & ","
lng9er = lng9er + .Cells(lngC, 11).Value
End If
End If
Next lngC
End With
prcBerechnen "C2:C20", str9er, lng9er
prcBerechnen "D2:D20", strKranz, lngKranz
Set rngName = Nothing
Set rngGefuellt = Nothing
End Sub
Sub prcBerechnen(strBereich As String, strTrenner As String, lngWerte As Long)
Dim arWerte As Variant, arSpieler As Variant
Dim lngC As Long
If strTrenner <> "" Then
Worksheets("Daten").Range(strBereich).Value = lngWerte
arWerte = Split(strTrenner, ",")
For lngC = 0 To UBound(arWerte) - 1
arSpieler = Split(arWerte(lngC), "::")
Worksheets("Daten").Range(arSpieler(0)).Value = Worksheets("Daten").Range(arSpieler(0)).Value - arSpieler(1)
Next lngC
End If
End Sub