AW: Textfeldeingabe in UserForm für Turniertabelle
06.09.2018 19:40:43
Robert
Hallo Michael,
freut mich, wenn ich Dir helfen konnte. Deine zwei Wünsche kann man auch noch einbauen.
Dazu muss das Makro btnPunkte_Click an den roten Stellen ergänzt werden. Damit werden zum Einen die Punkte verdoppelt, wenn es sich um das Turnier 3 handelt zum anderen wird am Schluss das Makro Sortierung gestartet:
Private Sub btnPunkte_Click()
Dim x As Long, Loletzte As Long
Dim LoSpalte As Long, LoZeile
Dim LoTurnier As Long, LoSpieltag As Long
For x = 1 To 5
If Me.Controls("optTurnier" & x) = True Then
LoTurnier = x
Exit For
End If
Next x
LoSpalte = 8 + (Me.cmbSpieltag.ListIndex * 5) + LoTurnier
Loletzte = Cells(Rows.Count, 4).End(xlUp).Row + 1
For x = 1 To 9
If Me.Controls("cmbspieler" & x) = "" Then Exit For
LoZeile = Application.Match(Me.Controls("cmbspieler" & x), Range("D:D"), 0)
If IsError(LoZeile) Then
Range("D" & Loletzte) = Me.Controls("cmbSpieler" & x)
Cells(Loletzte, LoSpalte) = (11 - x) * IIf(optTurnier3, 2, 1)
Loletzte = Loletzte + 1
Call KomboSpielername
Else
Cells(LoZeile, LoSpalte) = (11 - x) * IIf(optTurnier3, 2, 1)
End If
Next
Call Sortierung
End Sub
Das Makro Sortierung musste ich auch noch leicht anpassen. Zum Einen wird der zu sortierende Bereich jetzt im Makro ermittelt für den Fall, dass vielleicht doch mehr Teilnehmer vorhanden sein sollten. Zum Anderen musste ich bei meinem Excel das Hinzufügen der Sortierschlüssel von Add2 auf Add ändern, bei Deiner Version ist aber vielleicht auch Add2 möglich. Die ersten 3 Codezeilen können übrigens auch entfallen.
Sub Sortierung()
' Sortierung Makro
' Sortiert die Gesamtpunktzahl und ordnet die Namen alphabetisch
' Tastenkombination: Strg+a
Dim LoZeile As Long
LoZeile = Range("B" & Rows.Count).End(xlUp).Row
'ActiveWindow.SmallScroll Down:=114 diese Zeile kann gelöscht werden
'Range("C5:BF135").Select diese Zeile kann gelöscht werden
'Range("BF135").Activate diese Zeile kann gelöscht werden
ActiveWorkbook.Worksheets("Homegametabelle").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Homegametabelle").Sort.SortFields.Add Key:=Range( _
"H5:H" & LoZeile), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("Homegametabelle").Sort.SortFields.Add Key:=Range( _
"D5:D" & LoZeile), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Homegametabelle").Sort
.SetRange Range("C5:BF" & LoZeile)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Gruß
Robert