171 Aufrufe
Gefragt in Tabellenkalkulation von addeguddi Mitglied (538 Punkte)
Hallo liebe Excel Experten

Wer kann mir eine Lösung mitteilen?

Habe die Liste hochgeladen

https://filehorst.de/d/clwIcBrF

Habe schon einmal am Anfang des Jahres diese Frage gestellt und dies wurde durch ein Forum Mitglied gelöst. Nun habe ich aber die Liste verändert und möchte so, das der Klick nicht mehr in den Zellen A9 bis E29 erfolgt sondern von L2 bis AF4. Wollte das VBA verändern kriege es aber nicht gebacken.

Nun mein Problem:

Habe in den Zellen L2 bis AF4 Zahlen eingetragen. Bei Klick auf eine der Zellen, dies geschieht pro Spieler immer 3mal, bei jedem Durchgang bis die Punktzahl erreicht wird, die erforderlich ist. Zum Beispiel 301.

Spieler eins wirft auf Dartscheibe trifft auf Single 16 diese ist in Zelle S3 hinterlegt dann trifft er die Tripple 15 diese ist in Zelle Z4 letzter Wurf von Spieler 1 auf Bulls ist in AF2.

Diese 3 Würfe sollen bei Klick auf diese Zellen in Zelle L9 übernommen werden als Summe in diesem Fall wären das 76 Punkte. Danach soll der Rechenvorgang in der nächsten Leere Zelle also bei mir die Zelle N9) für den zweiten Spieler weiter gehen. Nachdem Spieler 2 seine 3 Würfe erledigt hat soll die Berechnung für Spieler 1 weiter erfolgen. Das Bedeutet die Summe von Durchgang 2 soll in der Zelle L9 zum Durchgang 1 dazu addiert werden usw.

Die Anzahl an Spieler wird durch eine Formel in VBA selektierbar. Das VBA erhielt ich von einem Forum Mitglied. Hier gebe ich in Zelle F1 die Anzahl von Spieler ein. Der Spieler der am Wurf ist wird in Zelle I3 angezeigt.

Durch ein Befehlsfeld

wird durch anklicken der Spieler 1; 2  oder je nachdem  wie viele mit machen, ausgewählt.

Ferner möchte ich gerne; wenn der erste Spieler wirft sollen die  ersten 3 Klicks in Zelle B11 als Zahl 3 übernommen werden. Wenn er seinen 2 Durchgang hinter sich hat soll in Zelle C11 die Zahl 6 erscheinen. Die Addition soll bis Zelle I11 erfolgen Für den 2 Spieler soll es in die darunter liegende Zelle erscheinen.

Für Spieler 1: Hier wird addiert B11+ Klicks = 6 usw. =Zählenwenn(L2:AF4;??? Klick???

Wer kann mir dabei helfen?

Für Hilfe Danke ich schon einmal im Voraus

LG Adde

24 Antworten

+1 Punkt
Beantwortet von m-o Profi (15k Punkte)

Hallo Adde,

ich habe dir mal deine Beispieldatei beabeitet: Download

Allerdings musst du die Zahlen per Doppelklick auswählen, damit die Werte und Anzahl der Würfe übernommen werden. Man kann zwar über das Worksheet-Change-Selection-Ereignis auch mit einem Klick die Zahlen und Würfe übernehmen, aber nur, wenn immer andere Werte angeklickt werden. Hast du z.B. die 180 mit drei Würfen, also drei mal die 60, dann funktioniert das ggf. nur beim ersten Mal. Bei den anderen zwei mal nicht, da keine andere Zelle angeklickt wird. Daher habe ich das Doppelklick-Ereignis genommen (ich glaube das hatte ich auch schon mal einer anderen Tabelle so für dich gemacht).

Schau mal, ob das alles so umgesetzt ist und funktioniert, wie du dir das vorstellst.

Gruß

M.O.

0 Punkte
Beantwortet von addeguddi Mitglied (538 Punkte)
Hallo M.O.

vielen lieben Dank.Es ist genau so wie ich es gerne gemacht hätte, aber da fehlt mir halt die Kenntnis in VBA.  Habe nur die Zellen J11 als Summe von B11 bis I11 geändert.

Klappt super. DANKE DANKE

LG Adde
+1 Punkt
Beantwortet von m-o Profi (15k Punkte)
Hallo Adde,

freut mich, dass alles so klappt, wie du dir das vorgestellt hast.

Gruß

M.O.
0 Punkte
Beantwortet von addeguddi Mitglied (538 Punkte)

Guten Morgen M.O.,

Bräuchte nochmals deine Hilfe.

ja das mit der Tabelle stimmt,  das du sie schon einmal gemacht hast,war im Februar 2018. Diese wollte ich so verändern wie die neue Tabelle ist, da ich bei der alten Tabelle immer scrollen musste . Habe es aber nicht geschafft. Jetzt habe ich leider noch ein Problem! In den Zellen L10, N10 usw. wird ja der wert den ich anklicke in Zelle L9 übernommen und in L10 abgezogen, bis dahin alles super. Nun mein Problem: wenn ich mich überworfen habe müssten die punkte auf den Stand gesetzt werden die vorher da waren 

Beispiel: 301 Spiel: Bisher erzielte Punkte 264 nun werfe ich anstatt der erforderlichen Punkte von 37 = 301 wäre OK nun hab ich aber 39 Punkte geworfen damit überworfen. Jetzt sollte der Wert von 264 wieder erscheinen, das gleich sollte auch bei 501 passieren.. Habe verschiedene  Formeln eingegeben Klappt aber nicht. Beispiel Formeln aus der alten Liste :=WENN(F33="";"";WENN(ODER((H33-F34)<0;(H33-F34)=1);H33;H33-F34)) Vielleicht gibt es da auch eine Möglichkeit. 

Schon jetzt einmal ein Danke

LG Adde

+1 Punkt
Beantwortet von m-o Profi (15k Punkte)
ausgewählt von halfstone
 
Beste Antwort

Hallo Adde,

ersetze das alte Makro im VBA-Projekts Punkteingabe 2 Gewinnlegs durch den folgenden Code:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim lngSpieler As Long
Dim lngSpalte As Long
Dim lngPunktSpalte As Long
Dim lngZeile As Long
Static lngErgebnis As Long

'Nur bei Klick im Bereich von L2 bis AF4 ausführen
If Not Intersect(Target, Range("L2:AF4")) Is Nothing Then
  'nicht in Zelle klicken
  Cancel = True
  'Nummer des Spielers einlesen
  lngSpieler = Range("I3").Value
 
  'Würfe  addieren
  'Spieler im Bereich A11 bis A24 suchen
  For lngZeile = 11 To 24
    If Cells(lngZeile, 1).Value = "Sp" & lngSpieler Then
       'Spalte für den Eintrag des Wurfes suchen
       For lngSpalte = 2 To 9
         'Prüfen, ob Wert in Zelle kleiner 3 ist
         If Cells(lngZeile, lngSpalte).Value < 3 Then
           'Wurf addieren
           Cells(lngZeile, lngSpalte).Value = Cells(lngZeile, lngSpalte).Value + 1
           'Schleife verlassen
           GoTo weiter:
         End If
       Next lngSpalte
    End If
  Next lngZeile
   
'Sprungmarke
weiter:
 
  'Punkte addieren, aber nur, wenn kein Fehlwurf
  If Target.Address <> "$AF$4" Then
    'Spieler im Bereich L6 bis AM6 suchen
    For lngPunktSpalte = 12 To 38 Step 2
       If Cells(6, lngPunktSpalte).Value = "Spieler " & lngSpieler Then
         'alter Punktestand in Variable speichern, aber nur, wenn der erste Wurf ausgeführt wurde
         If Cells(lngZeile, lngSpalte).Value = 1 Then lngErgebnis = Cells(9, lngPunktSpalte)
         'Punkte addieren
         Cells(9, lngPunktSpalte) = Cells(9, lngPunktSpalte) + Target.Value
         'Prüfen, ob überworfen
         If Cells(10, lngPunktSpalte).Value < 0 Then
           'alten Punktestand zurückschreiben
           Cells(9, lngPunktSpalte) = lngErgebnis
           'da keine weiteren Würfe mehr, Anzahl der Würfe auf 3 hochsetzen
           Cells(lngZeile, lngSpalte).Value = 3
         End If
         'Schleife verlassen
         Exit For
       End If
    Next lngPunktSpalte
  End If

End If

End Sub

Falls hier überworfen wird, wird der alte Wert zugeschrieben und die Anzahl der Würfe wird automatisch auf 3 hochgesetzt (damit die Würfe bei den richtigen Runden eingetragen werden).

Schau mal, ob das so für dich Okay ist.

Gruß

M.O.

0 Punkte
Beantwortet von addeguddi Mitglied (538 Punkte)
Hallo M.O.

habe heute Morgen schon geantwortet und mich herzlich bedankt, finde meine Antwort nicht!:

Ist diese angekommen? Bei diesem VBA kann ich da einen Zeile löschen und welche? Da die Würfe beim überwerfen nicht in Abzug gebracht werden soll, denn dadurch wird der Durchschnitt falsch berechnet. Also die Anzahl Würfe soll bleiben.

welchen Eintrag müßte ich löschen?

Liebe Grüße Adde
0 Punkte
Beantwortet von addeguddi Mitglied (538 Punkte)
Hallo M.O.

hat sich erledigt habe es eben noch einmal probiert und ist genau so wie ich es dachete.

Entschuldigung

LG Adde
+1 Punkt
Beantwortet von m-o Profi (15k Punkte)
Hallo Adde,

vielen Dank für Rückmeldung. Freut mich, dass alles so funktioniert, wie du willst.

Gruß

M.O.
0 Punkte
Beantwortet von addeguddi Mitglied (538 Punkte)

Hallo M.O.

könntest du mir noch einmal helfen? Da ich die Liste erweitert habe auf 60 Spieler, klappt es mit der Zählung der Punkte nicht die Würfe das habe ich hinbekommen. 

'Punkte addieren, aber nur, wenn kein Fehlwurf

  If Target.Address <> "$AF$4" Then

    'Spieler im Bereich L6 bis EB6 suchen Dies habe ich geändert funktioniert auch vorher bis AM6 hier zählt er die würfe

Jetzt sollen auch die Punkte von Zelle L9 bis Zelle EB9 addieren.

Muß ich hier in dieser Funktion etwas verändern?   For lngPunktSpalte = 12 To 38 Step 2 oder welche Eintragung müsste verändert werden?

Für deine Hilfe Danke ich jetzt schon einmal.

LG Adde

+1 Punkt
Beantwortet von m-o Profi (15k Punkte)

Hallo Adde,

das hast du richtig erkannt. Mit der Schleife wird ab Spalte L (= 9) der Name gesucht und damit die Spalte, in der die Punkte addiert werden sollen. Wenn du die Spieler jetzt bis Spalte EB (=132) gehen, musst du die 38 (=Spalte AL) entsprechend durch die 132 ersetzen:

 'Spieler im Bereich L6 bis EB6 suchen
    For lngPunktSpalte = 12 To 132 Step 2

Gruß

M.O.

...