Seite 1 von 1

Sich ändernde Werte auflisten mit VBA

Verfasst: So 8. Okt 2017, 16:58
von blubb_18
Hallo,

da meine VBA Fähigkeiten nicht ausreichend sind um mein Problem zu lösen, bitte ich um eure Hilfe.

Zur Veranschaulichung des Problems siehe Beispieldatei im Anhang.

Zur Erläuterung:
Es gibt zwei Drehfelder, welche jeweils mit einer Zelle verknüpft sind.
=> Drehfeld 1 (links) bezieht sich auf Zelle D5, Drehfeld 2 (rechts) bezieht sich auf Zelle F5
=> bei Klick eines Drehfeldes (Pfeil hoch oder runter) werden die jeweiligen Werte in Zelle D5 bzw. F5 im Intervall (+-1) erhöht oder erniedrigt.

Ziel wäre es nun bei jeder Betätigung/jedem Klick (von einem der Drehfelder) alle Wertepaare zu kopieren und in aufsteigender Form im Bereich (D7:F36) aufzulisten.

Wäre super, wenn mir dabei wer weiterhelfen könnte.

Tausend Dank schon mal im Voraus!!!
LG

Re: Sich ändernde Werte auflisten mit VBA

Verfasst: Mo 9. Okt 2017, 19:32
von mikele
Hallo,
das Ganze soll bei jedem einzelnen Klick funktionieren? Die einzelnen Wertepaare unterscheiden sich dann stets nur um 1! Nach 30 Klicks bist du dann bei 30-0 oder 15-15 oder so.
Was ist, wenn die 30 Wertepaare erreicht sind?
Sind gleiche Wertepaare zulässig (hoch- und herunterklicken)?

Re: Sich ändernde Werte auflisten mit VBA

Verfasst: Mo 9. Okt 2017, 20:57
von blubb_18
Hallo Mikele,

vielen Dank erstmal für deine Antwort!

In der Tat soll bei jedem Klick etwas passieren & ja es sind gleiche Wertepaare zulässig. Die 30 werden in der Regel nie erreicht, denn das Ganze ist in Wahrheit noch ein wenig komplexer als in der Beispieldatei.

Es soll eig. eine Art Tennislivescore werden, siehe Originaldatei im Anhang.
Die Makros für die zwei Buttons habe ich schon (sind jetzt aber nicht enthalten), das einzige was mir fehlt ist die Auflistung der Wertepaare nach jedem Punkt.

Und ja ich weiß, dass das sonst kein Mensch in Calc/Excel machen würde & das meine Formeln sehr umständlich sind. :lol:
Aber es wäre sehr lieb, wenn mir trotzdem wer helfen könnte.

LG

Re: Sich ändernde Werte auflisten mit VBA

Verfasst: Mo 9. Okt 2017, 22:03
von mikele
Hallo,
so wird es klarer. Wäre es nicht sinnvoller, anstelle der Drehfelder Schaltflächen zu nehmen (Klick=Punkt). Es hat doch keinen Sinn, rückwärts zu klicken? Mir fiele da nur ein, dass man einen Fehlklick korrigieren möchte. Das würde aber für dann aber auch Konsequenzen für die Übertragung der Werte haben.
Würdest du uns deine Makros auch noch zeigen?

Re: Sich ändernde Werte auflisten mit VBA

Verfasst: Di 10. Okt 2017, 00:12
von blubb_18
Hallo,

ja es wäre wahrscheinlich besser das mit Schaltflächen zu machen, wobei ich dann wohl wieder ein Makro bräuchte & wie gesagt mit Makros hab ich höchstens ein paar Grundkenntnisse.
Für die Buttons in OO musste ich mir auch schon einiges zusammensuchen, da ich es erst in Excel geschrieben hatte.
Das ist ein Anfängermakro deshalb bitte nicht zu streng sein^^

Für OpenOffice funktionieren jetzt aber:
Button 1 (komplett zurücksetzen):
Sub clrRngs
Dim oActiveSheet As Variant
Dim oCellRangeByName As Variant

oActiveSheet = ThisComponent.getCurrentController().getActiveSheet()
oCellRangeByName = oActiveSheet.getCellRangeByName("C11:G40")
oCellRangeByName.clearContents(7)

thisComponent.sheets().getbyname("Tabelle1").getcellrangebyname("D6").string = 0
thisComponent.sheets().getbyname("Tabelle1").getcellrangebyname("F6").string = 0
thisComponent.sheets().getbyname("Tabelle1").getcellrangebyname("C9").string = 0
thisComponent.sheets().getbyname("Tabelle1").getcellrangebyname("G9").string = 0
End Sub

Button 2 (Auflistung & aktueller Spielstand):

Sub clrRngs
Dim oActiveSheet As Variant
Dim oCellRangeByName As Variant

oActiveSheet = ThisComponent.getCurrentController().getActiveSheet()
oCellRangeByName = oActiveSheet.getCellRangeByName("C11:G40")
oCellRangeByName.clearContents(7)

thisComponent.sheets().getbyname("Tabelle1").getcellrangebyname("C9").string = 0
thisComponent.sheets().getbyname("Tabelle1").getcellrangebyname("G9").string = 0
End Sub

Re: Sich ändernde Werte auflisten mit VBA

Verfasst: Di 10. Okt 2017, 20:47
von mikele
Hallo,
Das ist ein Anfängermakro deshalb bitte nicht zu streng sein^^
Anfangen ist das wichtigste! Respekt, sich der Herausforderung zu stellen! 8-)
Ich habe mal ein bisschen 'dran 'rumgespielt. Sieh mal, ob du mit der Funktionalität und den Makros so zurecht kommst. An den verschachtelten Wenn()-Funktionen habe ich auch etwas gebastelt.
In den Eigenschaften der Spieler-Schaltflächen habe ich als Zusatzinformation die Zelle geschrieben, in der die Punkte des Spielers gezählt werden. Dadurch können beide Schaltflächen dasselbe Makro nutzen. Der Paramter oevent liefert das Objekt, dass den Makrostart verursacht. Das nutze ich auch bei den beiden Reset-Schaltflächen, die ja fast identisch in ihrer Funktion sind.

Re: Sich ändernde Werte auflisten mit VBA

Verfasst: Di 10. Okt 2017, 21:43
von blubb_18
Hallo mikele,

ich weiß gar nicht was ich sagen soll, aber das ist absolut genial :D :D :D
Vielen, vielen, vielen Dank!

Darf ich fragen wie lange du dafür gebraucht hast?
Auch wenn ich deinen Stundenlohn wohl nicht bezahlen kann, würde ich mich doch gerne erkenntlich zeigen, da du das überragend gemacht hast!!
Wenn du mir eine private Nachricht mit deiner Paypaladresse schickst überweise ich dir was für deine Arbeit & Mühe!

Schönen Abend noch & tausend Dank nochmal.

LG Willi

Re: Sich ändernde Werte auflisten mit VBA

Verfasst: Di 10. Okt 2017, 21:52
von mikele
Hallo,
nur nicht übertreiben ... ich bin auch nur ein Laie, der durch Foren wie dieses das ein oder andere gelernt hat.
Schön, dass es passt und dein Ziel getroffen ist - optimieren lässt sich immer noch was.

Re: Sich ändernde Werte auflisten mit VBA

Verfasst: Di 10. Okt 2017, 22:18
von blubb_18
Naja für mich ist es perfekt & es macht exakt genau das was ich will. :D
Nachdem ich jetzt noch meinen eigenen (Denk-)Fehler ausgebessert habe (bei 1.Punkt, 2.Punkt, etc. waren noch ein paar Sachen falsch).

...Und ich bin ein Laie, der das so nicht hinbekommen hätte, also musst du mindestens fortgeschritten sein! ;)
Mein Angebot steht, ob du es annehmen willst liegt bei dir!