102 Aufrufe
Gefragt in Tabellenkalkulation von addeguddi Experte (1.9k Punkte)

Hallo und einen schönen Tag wünsche ich dem Forum,

Wer könnte mir helfen?

Meine Frage:

Zuordnung von Runden auf Spieleranzahl bei Spinnbutton.

Beispiel:

In F1 wird die Rundenanzahl eingegeben. In H1 ist die Anzahl der  Spieler und in I1 wird die Anzahl der Spieler mal F1 übernommen.

Ablauf der Befehle:

1.te Runde für, je wieviel Spieler teilnehmen =  2,3,4,5,6,7 bis 8 Spieler sind. Also maximal bis 8 Spieler.

Nehmen wir mal an:

Es sind 2 Spieler und 2 Runden oder mehr:

Dann steht die 2 in H1 für 2 Spieler und in I1 die Zahl (2Spieler*2Runden Usw.).

Über Spinnbutton wird die Zahl verändert. Für Spieler 1 = 1 für 2 =2 usw. bei 2 Spieler ist die Reihenfolge: Erst die 1 dann 2 dann wieder 1, 2 usw. immer abwechselnd , dies geschieht automatisch aber nur wenn die 2 in Zelle I1 steht die die Zahl 4 darin springt es bis zur und dann wieder auf eins zurück.

Mein Ziel ist es:

Solang die 1.Runde noch nicht beendet ist soll I1 maximal die 2 stehen, weil, wenn ich auf Spinnbutton klicke wird aus der 1 die 2. Aber wenn ich jetzt 2 Runden eingebe, wird in der Zelle I1 die 4. Bei Klick auf Spinnbutton wird dann bis 4 weitergezählt, das sollte nicht passieren erst wenn die 1 Runde beendet ist soll In I1 die Zahl 4 erscheinen und dann von 3 auf 4 und nach der 4 zurück auf die 3. Das soll analog für 3 bis 8 Spieler geschehen.

IST dies MÖGLICH?

Also für 3 Spieler 1- 3 bei  2ter  Runde 4 bis 6 usw

Wenn das möglich wäre, könnte mir das jemand erstellen oder zu mindestens einen Rat mitteilen

 

wie ich das irgendwie hinbekommen könnte.

Gruß Adde

9 Antworten

0 Punkte
Beantwortet von m-o Profi (21.4k Punkte)
Hallo Adde,

eine einfache Möglichkeit wäre, in Zelle F1 nicht die Gesamtrundenzahl einzugeben, sondern nur die Zahl der aktuellen Runde. Dann müsste man das Makro des Spinbuttons so umschreiben, dass die Spielernummer anhand der Anzahl der Spieler und der aktullen Runde berechnet wird:

Maximalwert Spinbutton: =H1 x F1

Minimalwert Spinbutto: =Maximalwert Spinbutton - H1 + 1

Eine Userform würde ich hier nicht nehmen. Die muss immer wieder gestartet werden und die eingegebenen Werte dann entsprechend in die Tabelle eingetragen oder mittels Makro weiter verarbeitet werden.

Gruß

M.O.
0 Punkte
Beantwortet von addeguddi Experte (1.9k Punkte)
Hallo M.O.

habe diese Antwort eben erst gelesen ich probiere dies aus und gebe mein Feedback.

Gruß Adde
0 Punkte
Beantwortet von addeguddi Experte (1.9k Punkte)

Nochmal ich M.O.

habe das probiert aber schaffe es nicht. Das sind die Makros die ich benutze. ich weiß nicht was oder wie das eingefügt werden soll.

Private Sub SpinButton1_SpinDown()
ActiveSheet.Unprotect
If SpinButton1.Value + 1 < SpinButton1.Min Then SpinButton1.Value = SpinButton1.Max
ActiveSheet.Range("J1") = SpinButton1.Value

End Sub

Private Sub SpinButton1_Change()
ActiveSheet.Unprotect
If SpinButton1.Value < 1 Then SpinButton1.Value = ActiveSheet.Range("h1")
If SpinButton1.Value > ActiveSheet.Range("i1") Then SpinButton1.Value = 1

ActiveSheet.Range("J1") = SpinButton1.Value

End Sub

Vielleicht kannst du es machen

Gruß Adde
+1 Punkt
Beantwortet von m-o Profi (21.4k Punkte)

Hallo Adde,

eigentlich müsste es in der Datei sowohl eine

Private Sub SpinButton1_SpinDown() 

als auch eine

Private Sub SpinButton1_SpinUp()

geben.

Ich habe mal die beiden entsprechenden Makros angepasst:

Private Sub SpinButton1_SpinDown()
Dim lngMin As Long
Dim lngMax As Long

'oberen Wert des Spinbuttons berechnen, abhänging von Anzahl der Spieler (aus Zelle H1) und der aktuellen Runde (aus Zelle F1)
lngMax = Range("H1").Value * Range("F1").Value
'unteren Wert berechnen
lngMin = lngMax - Range("H1").Value + 1

ActiveSheet.Unprotect
If SpinButton1.Value < lngMin Then SpinButton1.Value = lngMax  'falls Wert kleiner als Minimalwert ist, dann Maximalwert zuweisen
ActiveSheet.Range("J1") = SpinButton1.Value

End Sub

Private Sub SpinButton1_SpinUp()

Dim lngMin As Long
Dim lngMax As Long

'oberen Wert des Spinbuttons berechnen, abhänging von Anzahl der Spieler (aus Zelle H1) und der aktuellen Runde (aus Zelle F1)
lngMax = Range("H1").Value * Range("F1").Value
'unteren Wert berechnen
lngMin = lngMax - Range("H1").Value + 1

ActiveSheet.Unprotect
If SpinButton1.Value > lngMax Then SpinButton1.Value = lngMin     'Falls neuer Wert größer als Maximalwert ist, dann Minimalwert zuweisen
If SpinButton1.Value < lngMin Then SpinButton1.Value = lngMin     'Falls neuer Wert kleiner als Minimalwert ist, dann Minimalwert zuweisen - nur bei neuer Runde
ActiveSheet.Range("J1") = SpinButton1.Value

End Sub

Gruß

M.O.

0 Punkte
Beantwortet von addeguddi Experte (1.9k Punkte)
Hallo M.O.

vorab erst einmal herzlichen Dank für die Mühe die du dir machst.

Habe diese Makro eingefügt da geht nicht gar nichts mehr, dann dachte ich, lasse die zwei Makros die vorhanden sind drin und füge das neue Makro hinzu aber auch hier funktioniert es nicht.

Die Überschriften erscheinen direkt mit roter Farbe

Soll ich diese Datei einmal hochladen?

Gruß Adde
0 Punkte
Beantwortet von addeguddi Experte (1.9k Punkte)
Guten Morgen M.O.

Vielen Dank für deine Unterstützung. Ohne dich / euch würde ich das nie schaffen. Du bist einfach Spitze.

Habe es hin bekommen.

Folgendes habe ich gemacht.

Dein Makro habe ich einzeln eingefügt und ein Teil von dem was vorher da war, habe ich belassen.

So sieht jetzt das Makro aus.

Private Sub SpinButton1_SpinDown()
ActiveSheet.Unprotect
If SpinButton1.Value + 1 < SpinButton1.Min Then SpinButton1.Value = SpinButton1.Max
ActiveSheet.Range("J1") = SpinButton1.Value

End Sub

Private Sub SpinButton1_Change()
ActiveSheet.Unprotect
Dim lngMin As Long
Dim lngMax As Long

'oberen Wert des Spinbuttons berechnen, abhänging von Anzahl der Spieler (aus Zelle H1) und der aktuellen Runde (aus Zelle F1)
lngMax = Range("H1").Value * Range("F1").Value
'unteren Wert berechnen
lngMin = lngMax - Range("H1").Value + 1

ActiveSheet.Unprotect
If SpinButton1.Value < lngMin Then SpinButton1.Value = lngMax 'fällt Wert kleiner als Minimalwert ist, dann Maximalwert zuweisen
ActiveSheet.Range("J1") = SpinButton1.Value

End Sub
Private Sub SpinButton1_SpinUp()

Dim lngMin As Long
Dim lngMax As Long

'oberen Wert des Spinbuttons berechnen, abhänging von Anzahl der Spieler (aus Zelle H1) und der aktuellen Runde (aus Zelle F1)
lngMax = Range("H1").Value * Range("F1").Value
'unteren Wert berechnen
lngMin = lngMax - Range("H1").Value + 1

ActiveSheet.Unprotect
If SpinButton1.Value > lngMax Then SpinButton1.Value = lngMin     'Falls neuer Wert größer als Maximalwert ist, dann Minimalwert zuweisen
If SpinButton1.Value < lngMin Then SpinButton1.Value = lngMin     'Falls neuer Wert kleiner als Minimalwert ist, dann Minimalwert zuweisen - nur bei neuer Runde
ActiveSheet.Range("J1") = SpinButton1.Value

End Sub

Falls du dich noch erinnern kannst hast du mir damals für die Variante Cricket Dart auch geholfen. da ging es mit der Ansage Spielende nicht und da hast du mir Userform erstellt, dies wurde nach Spielende eingeblendet. Habe es mit der Ansage auch geschafft.

Habe das Makro mit

'Checkout; 999 = Game over
If Range("J5").Value = 390 Then Start_Ansage (999)

erweitert.

Gruß Adde
0 Punkte
Beantwortet von m-o Profi (21.4k Punkte)

Hallo Adde,

freut mich, dass es jetzt so funktioniert, wie du willst. Ich weiß, dass ich dir schon öfters geholfen habe und im Groben weiß ich auch um was es ging, aber an alle Einzelheiten erinnere ich mich nicht (das Alter wink).

Gruß

M.O.

0 Punkte
Beantwortet von addeguddi Experte (1.9k Punkte)
Danke für die Antwort M.O.

Ja, ja das Alter, ich weiß das auch ich bin auch nicht mehr Jüngste. Wünschen dir und deiner Familie einen Guten Rutsch in das Jahr 2022 und bleibt gesund.

Gruß Adde
0 Punkte
Beantwortet von m-o Profi (21.4k Punkte)
Hallo Adde,

vielen Dank und meine besten Wünsche und Grüße für dich und deine Familie für das Jahr 2022.

Gruß

M.O.
...