[GELÖST] Makro um Namen zu platzieren nach Reihenfolge

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

DerTiggr
*
Beiträge: 18
Registriert: So, 29.11.2015 15:44

[GELÖST] Makro um Namen zu platzieren nach Reihenfolge

Beitrag von DerTiggr »

Hallo nochmal an ALLE!

Meine Darttabelle nimmt langsam Form an. Hier mal das Beispiel für ein Spiel. Insgesamt habe ich eigentlich mehr, aber das Prinzip bleibt ja gleich.

Jetzt zu meinem Problem und der Frage, ob es eine Lösung gibt.

Auf dem Spielbogen ( allen Spielbögen), sollen oben die Namen erscheinen. Ist das Spiel vorbei, sollen die Eingabefelder gelöscht werden (dies habe ich alles mit Makro hinbekommen). Jetzt gibt es ein Luxusproblem. Die Namen müssen je nach Platzierung ihren Platz wechseln. Gibt es eine Möglichkeit dies zu realisieren?

Kann man zB ein Makro setzten, der die Namen nach der Reihenfolge (zB von höchsten Wert zu niedrigsten Wert) auf die Spielerdatenseite schreibt und von dortaus werden sie auf die Spieleseiten übertragen. Ein 2. Makro gedrückt und die Spieleinträge werden gelöscht, dann müssten die Namen ja bleiben, oder?

Wir würde man so ein Makro machen? geht das mit Makros aufzeichenen?, weil schreiben kann ich sowas nicht.

Geht das auch in einem Makro? Erst Namen zuweisen, dann Spieldaten löschen?

Habe die Datei mal angehängt und hoffe jemand versteht was ich meine und könnte helfen.

Gruß
DerTiggr
Dateianhänge
DARTgame.ods
(38.99 KiB) 58-mal heruntergeladen
Zuletzt geändert von DerTiggr am Mi, 18.01.2023 19:59, insgesamt 1-mal geändert.
Mondblatt24
*******
Beiträge: 1136
Registriert: So, 14.05.2017 16:11

Re: Makro um Namen zu platzieren nach Reihenfolge

Beitrag von Mondblatt24 »

Win 11 (x64) ▪ 24.2.1.2 (x64) ▪ AOO Portable 4.1.15
Wurde die Frage zutreffend beantwortet bitte den Betreff der Eingangsfrage mit [GELÖST] ergänzen. Beschreibung
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Makro um Namen zu platzieren nach Reihenfolge

Beitrag von F3K Total »

Hallo DerTiggr oder auch Norderjung,

lies doch bitte mal in den allgemeinen Hinweisen zur Forumsbenutzung nach, warum Crossposting nicht so gerne gesehen ist.

Ich habe mir trotzdem, weil ich selber gern Darts spiele, deine Datei zu Gemüte geführt.
Anbei das Ergebnis.
Wenn du auf den Knopf "neue Runde" drückst passiert per Makro folgendes:
  • die aktuelle Punktzahl jeden Spielers wird in Tabelle SPIELERDATEN, Spalte D hinter jedem Spieler eingetragen
  • alle PPDs werden für alle vier Spieler in Tabelle 501 Masters DD_2 gelöscht
  • in Tabelle SPIELERDATEN werden die Spieler neu sortiert, der mit den meisten Punkten wird Spieler 1, der schlechteste Spieler 4

Gruß R
Dateianhänge
Darts_F3K.ods
(50.16 KiB) 63-mal heruntergeladen
DerTiggr
*
Beiträge: 18
Registriert: So, 29.11.2015 15:44

Re: Makro um Namen zu platzieren nach Reihenfolge

Beitrag von DerTiggr »

Danke für Deine Antwort.

Werde es mir nachher mal anschauen.

Zum Thema Crossposting... ok Asche auf mein Haupt, war ein Fehler und habe es nicht gewusst, dass es nicht erwünscht ist. Habe mir gedacht, so erreiche ich evtl. mehr, da es ja doch spezifisch ist.

Hätte man es mir per PN geschrieben, hätte ich den Post gelöscht. Wäre ja kein Ding gewesen. Mit dem Crosspostingpost war es mir ja nicht mehr möglich zu löschen.

Nur mal ne kurze Frage... Sterben Foren dann nicht aus, wenn man sich aus den 100erten Foren nur eine Aussuchen kann? Was wenn man dort keine brauchbare Antwort erhält? Muss man dann alles umformulieren, damit es kein Crossposting ist? Man kann sein Post ja nicht mehr löschen... Finde es doch etwas Kontraproduktiv.

Ganz wichtig: will mit den Zeilen nicht angreifen, sondern es nur für mich feststellen.

Bin dir trotzdem unendlich dankbar für deine Antwort und hoffe, es löst mein Problem.
DerTiggr
*
Beiträge: 18
Registriert: So, 29.11.2015 15:44

Re: Makro um Namen zu platzieren nach Reihenfolge

Beitrag von DerTiggr »

Vielen Dank F3K Total, das ist genau das was ich gesucht habe.

Wie kann ich dieses Makro für alle Spiele anwenden? Muss ich dann nur im Makro die entsprechenden Bereiche umschreiben? Sorry ist alles absolut neu für mich.

Wir haben noch Highscore, Halfit, Shanghai, Baseball und da soll es genauso sein oder geht es jetzt nur immer pro Seite?

Auch wenn es blöd klingt, wie entferne ich deinen Button? hätte es gerne auf dem Mülleimer :)

Aber als ich auf nächste Runde geklickt habe, war ich schockverliebt XD
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Makro um Namen zu platzieren nach Reihenfolge

Beitrag von F3K Total »

DerTiggr hat geschrieben: Fr, 13.01.2023 11:30 Wie kann ich dieses Makro für alle Spiele anwenden?
Moin,
das wird vermulich nich ganz einfach, ich habe die Tabelle SPIELERDATEN geändert, weil die unnötigen Leerzeilen zwischen den Spielern das Makro verkompliziert hätten. Grundsätzlich ist es einfacher das Makro auf alle Spiele anzuwenden, wenn die Zellen die gelöscht und sortiert werden sollen, immer an der gleichen Stelle auf dem Blatt sind.
Um den Button zu entfernen, musst du in den Formularentwurfsmodus gehen.
FE.png
FE.png (3.29 KiB) 1775 mal betrachtet
Gruß R
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Makro um Namen zu platzieren nach Reihenfolge

Beitrag von F3K Total »

Moin,
weil ich Lust dazu hatte, habe ich eine Dartsscheibe als Userinterface eingebaut.
Klicke auf die Zahlen am Rand, auf Bull oder die Null oben rechts wenn kein Treffer.
Je nachdem bekommst du zur Auswahl Single/Double oder Tripple, der angeklickte Wert wird in die Tabelle an der richtigen Stelle eingetragen.
F1.png
F1.png (100.06 KiB) 1737 mal betrachtet
Gruß R
Dateianhänge
Darts_F3K_Forum.ods
(170.14 KiB) 59-mal heruntergeladen
DerTiggr
*
Beiträge: 18
Registriert: So, 29.11.2015 15:44

Re: Makro um Namen zu platzieren nach Reihenfolge

Beitrag von DerTiggr »

Wahnsinn was möglich ist... Das sind ja ganz andere Dimensionen XD

Ich scheiter leider kläglich an den Makros und die anderen Spiele. Habe es erstmal beherzigt und alles Spiele werden die gleichen Zellen bekommen.

Dein Makro mit dem Löschen und Sortieren klappt ja sehr gut. Was muss ich ändern, wenn es nicht von groß nach klein sortiert werden soll, sondern von klein nach groß.

Dann hätte ich für fast jedes Spiel eine Lösung ... ausser für Burma Road

Habe mal die Datei angehängt. Die Makros für Highscore und Shanghai gehen zwar, aber Sortierung muss da ja genau anders herum. Der Höchste ist dann ja der letzte Spieler beim nächsten Spiel.

schönen Montag noch und ich fieber deiner Antwort entgegen
Dateianhänge
DARTgame2.4.ods
(88.59 KiB) 59-mal heruntergeladen
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Makro um Namen zu platzieren nach Reihenfolge

Beitrag von F3K Total »

Hallo Tiggr,
in meinem Makro sub Sort_by_descriptor(oSheet) gibt es folgnde Zeile:

Code: Alles auswählen

osf1.SortAscending = false
wenn du sie auf

Code: Alles auswählen

osf1.SortAscending = true
änderst, drehst du die Sortierreihenfolge um.

Gruß R
DerTiggr
*
Beiträge: 18
Registriert: So, 29.11.2015 15:44

Re: Makro um Namen zu platzieren nach Reihenfolge

Beitrag von DerTiggr »

Hab es gefunden und es hat geklappt. Gerade mal gespielt und getestet und es geht für alle 4 Spiele. Es sieht sooooo gut aus. Ohne dich hätten wir es nie geschafft.

Gibt aber trotzdem noch ein Problem... Man ist ja nicht immer 4 Spieler, meist 2 oder 3. Die Sortierung geht aber nur wenn alle Spieler ausgefüllt sind.

Steht bei Name Spieler, darf es nicht in die Sortierung aufgenommen werden. Geht das?
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Makro um Namen zu platzieren nach Reihenfolge

Beitrag von F3K Total »

Hallo Tiggr,
habe das Makro Sort_by_descriptor jetzt so umgebaut, dass es mit weniger als vier Spielern funktioniert.
Die Sortierreihenfolge kannst du wie gehabt einstellen.

Code: Alles auswählen

sub Sort_by_descriptor(oSheet)
    dim nColumn as integer
    dim osfs(0) as object
    DIM osf1 as new com.sun.star.util.SortField
    oSortRange = oSheet.getcellrangebyName("C2:D5")
    for j = 0 to 3
        oNameCell = oSortRange.getcellbyposition(0,j)
        if oNameCell.String = "" then 
            bfound = true
            exit for
         endif
    next j
    if bfound = true then 
        oSortRange = oSortRange.GetCellrangebyPosition(0,0,1,j-1)
    endif
    nColumn = 3
    osf1.field = nColumn
    osf1.SortAscending = false
    osfs(0) = osf1
    oSortDescriptor = oSortRange.createSortDescriptor
    for i = 0 to uBound(oSortDescriptor)
        oProp = oSortDescriptor(i)
        with oProp
            if .Name = "ContainsHeader" then 
                .Value = false
                oSortDescriptor(i) = oProp
            endif
            if .Name = "SortFields" Then 
                .Value = osfs
                oSortDescriptor(i) = oProp
            endif
        end with
    next i
    oSortRange.sort(oSortDescriptor)
end sub
Gruß R
DerTiggr
*
Beiträge: 18
Registriert: So, 29.11.2015 15:44

Re: Makro um Namen zu platzieren nach Reihenfolge

Beitrag von DerTiggr »

Danke F3K Total
habe jetzt die entsprechenden Teile ausgetauscht (oder musste das dazu?) Jetzt jetzt werden die Namen aber nicht mehr getausch. Muss man was bestimmtes als Spielername für die Platzhalter eingeben?
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Makro um Namen zu platzieren nach Reihenfolge

Beitrag von F3K Total »

Moin,
nein austauschen ist richtig.Von Sub bis End Sub.
Bei mir lief es vorhin.
Bin nicht mehr am Rechner.
Gruß R
DerTiggr
*
Beiträge: 18
Registriert: So, 29.11.2015 15:44

Re: Makro um Namen zu platzieren nach Reihenfolge

Beitrag von DerTiggr »

Habe es jetzt nochmal probiert und es geht leider nicht. Gelöscht werden die Daten aber die Namen wechseln nicht die Positionen.
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Makro um Namen zu platzieren nach Reihenfolge

Beitrag von F3K Total »

... dann lade die Datei mal hoch...
Antworten