echo ("viewtopic_body.html wird ausgeführt!\n");

Round-Robin Turniertool

.. das wohl mächtigste Werkzeug in Bill Gates' Büro-Sippe. Ob reine Formeln, PowerQuery oder VBA. Hier bleiben kaum Wünsche unerfüllt.
Wisi82
Beiträge: 79
Registriert: 14. Apr 2023, 14:22
Hat sich bedankt: 11 Mal
Danksagung erhalten: 25 Mal
Kontaktdaten:

Round-Robin Turniertool

#1

Beitrag von Wisi82 »

Hallo Zusammen

ich habe dieses Tool ursprünglich im Thema K.O.-Turniertabelle hochgeladen, inzwischen sind jedoch Fragen zu diesem Tool aufgetaucht.
Damit wir damit Im Thema «K.O.-Turniertabelle» keine Verwirrung stiften, haben wir uns, nach Absprache mit dem Forumsbesitzer, entschieden, ein neues Thema für diese Datei zu eröffnen, damit getrennt über die beiden Themen diskutiert werden kann. Hier nochmal die entsprechende Datei

Beste Grüsse Erwin
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Folgende Benutzer bedankten sich beim Autor Wisi82 für den Beitrag:
d'r Bastler
Windows 10 Home, Office 2019 Professional, Aber meistens ist es der Kopf, welcher Verwirrung stiftet ;)
mleo08179
Beiträge: 2
Registriert: 19. Mär 2023, 21:39
Kontaktdaten:

Re: Round-Robin Turniertool

#2

Beitrag von mleo08179 »

Servus Erwin,

hab es mittlerweile irgendwie hinbekommen, die optimale Lösung ist es leider noch nicht. Läuft aber noch nicht wirklich so wie ich mir das vorstelle :D

Es läuft bei deiner Mappe alles über den Begegnungszettel und Partiestatus ab oder?

Lg Martin
mleo08179
Beiträge: 2
Registriert: 19. Mär 2023, 21:39
Kontaktdaten:

Re: Round-Robin Turniertool

#3

Beitrag von mleo08179 »

habe das so gelöst das ich für jede Spielpaarung einen eigenen Button habe, ob das wirklich zielführend ist, wage ich zu bezweifeln :lol:

Code: Alles auswählen

Sub Button1_Click()
    ' Setze den Wert der selectedRow-Variable auf 5
    selectedRow = 5
    If Button1.Caption = "ERGEBNIS" Or Button1.Caption = "BEENDET" Then
        Dim Tischzeile As Integer
        Dim SpielerAName As String
        Dim SpielerBName As String

        Tischzeile = 5 ' Zeilennummer für Button1
        SpielerAName = Sheets("16erPlan").Cells(Tischzeile, 7).Value ' Spalte G
        SpielerBName = Sheets("16erPlan").Cells(Tischzeile, 11).Value ' Spalte K

        If Sheets("16erPlan").Cells(Tischzeile, 8).Value <> "" Or Sheets("16erPlan").Cells(Tischzeile, 10).Value <> "" Then
            Ergebnis.Tag = Tischzeile
            Beendet.Show
        Else
            Ergebnis.Tag = Tischzeile
            Ergebnis.SpielerA.Caption = SpielerAName
            Ergebnis.SpielerB.Caption = SpielerBName

            Ergebnis.Show
            
            
        End If
    ElseIf Button1.Caption = "OFFEN" Then
        UserForm1.Show 'Ruft das Tisch1-Makro auf
    End If

    If Range("H5").Value <> "" Then
        Button1.Caption = "BEENDET"
    ElseIf Range("M5").Value = True Then
        Button1.Caption = "OFFEN"
    Else
        Button1.Caption = "ERGEBNIS"
    End If
    Range("M5").Value = Not Range("M5").Value
End Sub
Wisi82
Beiträge: 79
Registriert: 14. Apr 2023, 14:22
Hat sich bedankt: 11 Mal
Danksagung erhalten: 25 Mal
Kontaktdaten:

Re: Round-Robin Turniertool

#4

Beitrag von Wisi82 »

Hallo zusammen

Nur zum Verständnis, in dieser Unterhaltung wurden vorher schon ein paar PN ausgetauscht, welche jetzt hier natürlich fehlen für den Zusammenhang.
@mleo08179
Es läuft bei deiner Mappe alles über den Begegnungszettel und Partiestatus ab oder?
Nicht ganz auch das Tabellenblatt «Tische» hat auch noch Einfluss, blende mal die ausgeblendeten Spalten ein. Die ganzen Auswertungen ob ein Tisch momentan frei ist oder nicht, habe ich alles über Formeln gelöst, über VBA schreibe ich meistens nur in bestimmte Zellen gewisse Werte, anhand dieser Werte werden dann die ganzen Tabellen anhand der Formeln berechnet. Es gibt den Wert «Partienzeile» dieser wird beim Start einer Partie in das Datenblatt «Begegnungszettel» und «Tische» eingetragen, ausserdem wird im Datenblatt «Partien Status» der Wert eingetragen, dass die Partie gedruckt (gestartet) wurde. Alles andere läüft dann über die Formeln. wenn ein Resultat erfasst wird, werden nur die zwei Resultate in das Tabellenblatt «Partien Status» eingetragen.
habe das so gelöst das ich für jede Spielpaarung einen eigenen Button habe, ob das wirklich zielführend ist, wage ich zu bezweifeln :lol:
Auch ich habe für jede Partie einen einzelnen Button gemacht, irgendwie muss man ja unterscheiden, welche Partie angewählt wurde. Mir war kein anderer Weg bekannt um dieses Problem zu lösen.

LG Erwin
Windows 10 Home, Office 2019 Professional, Aber meistens ist es der Kopf, welcher Verwirrung stiftet ;)
d'r Bastler
Beiträge: 928
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 255 Mal
Danksagung erhalten: 134 Mal

Re: Round-Robin Turniertool

#5

Beitrag von d'r Bastler »

Moin Erwin, moin Martin,
bin im Moment reichlich anderweitig beschäftigt, daher-sorry- meine späte "Einmischung" und dann auch noch, ohne eine der Mappen überhaupt geöffnet zu haben... Es sei Euch also ein herzliches Bastler halt die Klappe, Du hast das Thema völlig verfehlt erlaubt :mrgreen:
anderer Weg bekannt um dieses Problem zu lösen.
In Tabellen (da gehört er Code unten hin) gibt es die Möglichkeit anhand der ausgewählten Zell-Adresse gezielt Aktionen zu starten. Dabei sind als auslösender Event z.B. Selection_Change oder Before_DoubleClick geeignet, bei denen jeweils das Target (also die aktive Zelle) abgefangen wird. Für jedes Makro ein eigener Button wird damit unnötig.

Die fraglichen Adressen in ein Array geschrieben ermöglichen dann mit Select Case beliebige Aktionen. Als Beispiel habe ich hier msgbox genutzt.

Code: Alles auswählen

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)    'reagiert bei jedem doppelklick
    MsgBox Target.Column
    Cancel = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)     'reagiert nur bei bestimmten Zellen
Dim aAddress, aAction 'Array
Dim i As Integer

aAddress = Array("$A$1", "$B$2")
aAction = Array("Aktion für A1", "Aktion für B2")

For i = 0 To UBound(aAddress) + 1
    On Error Resume Next
    If Target.Address = aAddress(i) Then
        MsgBox aAction(i)
    End If
Next i

End Sub
Und hier noch eine etwas abgewandelte Version, die Makros in einem allg. Modul aufruft:

Code: Alles auswählen

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim aAddress, aAction 'Array
Dim i As Integer
Dim sAction As String

aAddress = Array("$A$1", "$B$2")
aAction = Array("Versiv", "Version")

For i = 0 To UBound(aAddress) + 1
    On Error Resume Next
    If Target.Address = aAddress(i) Then
        sAction = aAction(i)
        Application.Run sAction
        GoTo bye
    End If
Next i
bye:
End Sub
Die Aktionen sind wieder nur dümmliche msgbox.

Wie gesagt, schimpfen, wenn ich Blödsinn verzapfe... :roll:

Grüße
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 pro [32] & Win11 + Office 2024 pro [64] & macOS.X15 + Office2019 pro & Android12 & XL365
Wisi82
Beiträge: 79
Registriert: 14. Apr 2023, 14:22
Hat sich bedankt: 11 Mal
Danksagung erhalten: 25 Mal
Kontaktdaten:

Re: Round-Robin Turniertool

#6

Beitrag von Wisi82 »

Hallo Bastler
daher-sorry- meine späte "Einmischung"
Ich habe mir für meine Antwort ja auch etwas Zeit gelassen, und weshalb sollten wir dir den Mund verbieten, jeder der versucht zu helfen, kann einen auf die richtige Spur bringen, ich glaube du hast das Hinterfragen der einzelnen Buttons von Martin schon richtig verstanden. Und auch entsprechende Lösungen geliefert, jetzt muss sich Martin selber entscheiden in welche Richtung er sein Tool entwickeln will.

Deine Vorschläge sind wunderbare Varianten auch wenn ich sie noch nicht zu 100% verstehe (ca. 98%).
Als ich das Tool gebaut habe, war es mir wichtig, dass ich Buttons habe, damit auch ein unerfahrener Benutzer auf den ersten Blick erkennt, wo er hinklicken muss. um zu wissen wo man den Doppelklick machen muss, muss man das Tool kennen, oder die Zelle muss entsprechend markiert werden. Ausserdem sind in meiner Mappe eigentlich alle Zellen gesperrt und auch nicht anwählbar, das macht dann Funktionen mit Target nicht mehr wirklich nutzbar. Ich habe aber nicht für jeden Button den ganzen Code geschrieben wie im Beispiel von Martin, ich habe pro Button nur folgenden Code dahinter:

Code: Alles auswählen

Sub drucken_311()
    Partienzeile = 2
    Call drucken3
End Sub
in der ersten Zeile setze ich den Wert einer globalen Variable, dann rufe ich die eigentliche Funktion auf, welche dann wieder mit der globalen Variable arbeitet.
Als ich bezüglich dieses Forumseintrags meine Funktionen noch mal angeschaut habe, ist mir sofort aufgefallen, dass ich wahrscheinlich zu diesem Zeitpunkt noch nicht wusste, wie eine Variable an eine Folgefunktion übergeben werden kann, deshalb habe ich mit einer globalen Variable gearbeitet (Zum Glück führt nicht nur ein Weg zum Ziel :D ).

Im Beispiel von Martin wird auch die .Caption vom Button geändert, er trägt direkt auf dem Button den Satus der Partie ein.
Bei mir ist das anders, Resultate, Spielernamen, Tischnummer, ... werden via VBA nur in die Systemtabelle «Partien Status» eingetragen, Jeweils ein Wert wird beim Starten einer Partie noch in die Tabelle «Tische» und ein weiterer in die Tabelle «Begegnungszettel» bei jedem Aufruf einer Partie (welches ist die aktuelle Partie).
Alles andere was für den Benutzer sichtbar ist, befüllt sich dann anhand von Formeln und bedingten Formatierungen, welche sich auf die angesprochene Systemtabelle beziehen. Ob eine Partie «offen»,«Am Spielen» oder «beendet» ist, wir bei mir nur durch eine Bedingte Formatierung angezeigt;
Offene Partie; keine Formatierung
Am Spielen; Zellen ROT eingefärbt
beendet; Zellen Grün eingefärbt
Der Button bleibt immer gleich neben der Partie stehen, nur die Funktion auf dem Button ändert sich.

Gibt es Varianten von deinen Funktionen die auch funktionieren, wenn alle Zellen gesperrt sind und auch nicht anwählbar sind?

Es grüsst bei bestem Wetter Erwin
Windows 10 Home, Office 2019 Professional, Aber meistens ist es der Kopf, welcher Verwirrung stiftet ;)
d'r Bastler
Beiträge: 928
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 255 Mal
Danksagung erhalten: 134 Mal

Re: Round-Robin Turniertool

#7

Beitrag von d'r Bastler »

...s grüsst bei bestem Wetter E...
Na, Dir geht's ja gut. Bei uns ist's grau in grau...

Moin Erwin,
um Deine Abschlussfrage zuerst zu beantworten: Der Blattschutz von XL lässt als Standard die Auswahl von nicht/gesperrten Zellen zu, ohne dabei ihren Inhalt zu ändern. Also sind die beiden im Beispiel genutzten Events für Aktionen verfügbar. Soll dabei allerdings der Inhalt der Zelle selbst geändert werden (vgl .Caption ändern), muss im Makro der Blatt/Zellschutz vorübergehend ausgehoben werden.

Zur Benutzerführung gibt es verschiedene Möglichkeiten. Schon oft habe ich den Vorschlag von Kommentaren je Zelle gesehen, mit dem ich mich aber irgendwie nicht anfreunden mag. Ich bevorzuge einfache Hintergrundfarben, die in einer Legende irgend wo oben in der Tabelle erklärt werden.

Triste Grüße :roll:
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 pro [32] & Win11 + Office 2024 pro [64] & macOS.X15 + Office2019 pro & Android12 & XL365
Wisi82
Beiträge: 79
Registriert: 14. Apr 2023, 14:22
Hat sich bedankt: 11 Mal
Danksagung erhalten: 25 Mal
Kontaktdaten:

Re: Round-Robin Turniertool

#8

Beitrag von Wisi82 »

Hallo Bastler
grau in grau
Bei uns wird's wohl am Wochenende auch nicht besser ;) aber was soll's ich nehms wie's kommt, ändern kann ich's ja eh nicht.

Das mit dem Blattschutz (Auswahl ob Zellen auswählbar, ....) kenne ich, ich habe aber die Aktivierung von Zellen bewusst ausgeschalten, Der Benutzer soll den Button benutzen, welcher auch bei nicht auswählbarer Zelle aktiv ist.
Wie Martin das in seinem Tool machen will, kann ich nicht beurteilen.
Wäre schön, wenn du vielleicht doch mal einen kurzen Blick in mein Tool werfen könntest, es würde mich nämlich interessieren, wie du meine Variante der Benutzerführung findest.

Beste Grüsse Erwin
Windows 10 Home, Office 2019 Professional, Aber meistens ist es der Kopf, welcher Verwirrung stiftet ;)
d'r Bastler
Beiträge: 928
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 255 Mal
Danksagung erhalten: 134 Mal

Re: Round-Robin Turniertool

#9

Beitrag von d'r Bastler »

Servus, noch mal!

na, an Tabellenblättern fehlt's der Mappe ja mal nicht ;-) Du bildest darin gleich ein knappes Dutzend an Turnierversionen ab und man sieht der Mappe an, dass sie Stück für Stück gewachsen ist. Du hast also nicht auf Basis eines lange vorbereiteten Pflichtenheftes mit einer leeren Mappe angefangen und damit die Möglichkeit genutzt, redundanten Code möglichst zu vermeiden (was Du und da bin ich mir sicher, in einer neuen Version längst geübt (Teile des Codes sind knapp zehn Jahre als, habe ich gesehen) heute vermutlich in Kombination mit integrierten Datenmodell tun würdest.

Wenn ich jetzt für ein Turnier die Mappe nutzen wollte, würde ich vermutlich erst einmal alles ausblenden, was für dieses konkrete Turnierformat nicht gebraucht wird, und -soweit möglich- nur ein Tabellenblatt verwenden. Die Vorrunde ist gespielt, also ab mit den dazugehörigen Spalten in die Unsichtbarkeit, als ein Beispiel.

Um hierfür einen übersichtlichen Einstieg zu bieten, kann man die Mappe mit einer Userform "Auswahl, Optionen, Turnierformat" o.Ä. eröffnen, das z.B. auch den Zugriff auf bereits (ggf. in der selben Mappe) gespeicherte Turniere ermöglicht. Erst wenn dieser Splash-Screen alle notwenigen Daten enthält, wird der Zugang zum gewünschten Turnier in reduzierter, damit übersichtlicherer Form möglich.

Das nur mal eben so, als meine ersten Gedanken, was natürlich bedeutet, dass es ein dickes, fettes ABER geben muss: Ich habe vieles gesehen, dass Du ohne die Nutzung von Datenmodellen und ihrer späteren Präsentation erstellt hast (eine sehr sinnvolle Trennung, die ich auch erst mühsam begreifen musste), das ist kritikabel. Andere Dinge dagegen hast Du sehr elegant gelöst.

Nimm's als First Flush Feedback, was man mit Nörgeln auf ahnungslos-unqualifiziertem Niveau übersetzen könnte. Und nachdem es ja zu funktionieren scheint: Dicken Respekt! Da steckt viel gut überlegte Arbeit darin!

Schöne Grüße!

Wenn's mich heute Abend noch sehr zwickt, versuche ich mal einen solchen Splash Screen als Grafik zu basteln.
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 pro [32] & Win11 + Office 2024 pro [64] & macOS.X15 + Office2019 pro & Android12 & XL365
Sulprobil
Beiträge: 22
Registriert: 23. Sep 2022, 05:54
Hat sich bedankt: 3 Mal
Danksagung erhalten: 14 Mal
Kontaktdaten:

Re: Round-Robin Turniertool

#10

Beitrag von Sulprobil »

Hallo,

mein Vorschlag: nimm'
https://www.sulprobil.com/sbroundrobin_en/
als Anregung.

Viele Grüße
Folgende Benutzer bedankten sich beim Autor Sulprobil für den Beitrag:
d'r Bastler
Antworten

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot] und 2 Gäste