576 Aufrufe
Gefragt in Tabellenkalkulation von addeguddi Experte (2.5k Punkte)

Hallo und Guten Morgen an das Forum Team,

Bevor ich euch die Frage stellen wollte habe ich Stundenlang versucht im Internet nach Lösungen gesucht aber nichts für mein Problem gefunden.

Habe durch Hilfe von Forum Mitglieder eine Dart Tabelle erstellen können, sitze aber wieder vor einem für mich großem Problem für euch wahrscheinlich eine Leichtigkeit das zu lösen.

Folgendes: Mir hat die Ansicht der Tabelle nicht gefallen. Alte Ansicht war bei Doppelklick in den Feldern A4 bis F15 das auch wunderbar funktioniert und die davor gesehenen Zellen die Eingaben übernommen haben, DANK eurer Hilfe. Nun habe ich 7 Spalten vor dem Doppelklicken eingefügt. das bedeutet jetzt, dass anstatt A4 bis F15 jetzt H4 bis M15 bei Doppelklick nun fängt das Problem bei mir an. Folgendes habe ich versucht. Zellen und Zeilen zu verändern aber das klappt nicht. Vielleicht liegt es an meinem Alter, das ich das nicht richtig verstehe.

Das sind die Eintragungen wo es funktioniert.

'Zeile für Eintrag der Würfe suchen
lngWZeile = 19 + WorksheetFunction.RoundDown(Cells(lngSZeile, 10).Value / 3, 0)
Auf was bezieht sich diese Aussage?  lngWZeile = 19
   
'Falls nur 1 übrigbleibt und damit kein Doppel-Out möglich ist, Wurf auf Null setzen
If Cells(13, lngSpalte) - lngWurf = 1 Then lngWurf = 0
Welche Zelle ist damit gemeint.
Auf was bezieht sich diese Aussage? Welche Celle ist gemeint? If Cells(13, lngSpalte)
'Fall kein Check-Out mit Doppel, dann Ergebnis des Wurfes auf Null setzen
If Cells(13, lngSpalte) - lngWurf = 0 And lngDT <> 2 Then lngWurf = 0
    
'Spalte für den Eintrag der Würfe ermitteln
lngWSpalte = WorksheetFunction.RoundDown(Cells(lngSZeile, 17).Value / 3, 0) + 2
Was sagt lngSZeile aus
Wenn mir jemand das erklären könnte wär ich für die Unterstützung sehr Dankbar.
Gruß Adde

7 Antworten

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

Hallo Adde,

lngWZeile und lngWSpalte sind Variablen für die Zeile und die Spalte, in der die Würfe eingetragen werden (siehe die entsprechende Erläuterung im Makro).

Wenn du vorne neu 7 Spalten einfügst, musst du überall im Makro die betreffenden Spalten ändern:

Bsp.

bisher:

'Zeile für Eintrag der Würfe suchen
lngWZeile = 19 + WorksheetFunction.RoundDown(Cells(lngSZeile, 10).Value / 3, 0)

jetzt

'Zeile für Eintrag der Würfe suchen
lngWZeile = 19 + WorksheetFunction.RoundDown(Cells(lngSZeile, 17).Value / 3, 0)

Die Cells-Anweisung ist wie folgt aufgebaut: Cells(Zeile, Spalte)

Was du natürlich auch ändern musst, sind die Anweisungen

'Nur bei Klick im Bereich von A4 bis F14 ausführen
If Intersect(Target, Range("A4:F15")) Is Nothing Then Exit Sub

und

'falls ja dann die entsprechenden Werte in Variable schreiben
    If Target.Address = "$A$15:$B$15" Then lngWurf = 25
    If Target.Address = "$C$15:$D$15" Then

sowie

  lngWurf = Target.Value
      If Target.Column = 2 Or Target.Column = 5 Then lngDT = 2   'Marker für Doppel setzen
      If Target.Column = 3 Or Target.Column = 6 Then lngDT = 3   'Marker für Triple setzen

Target.Column bezeichnet  hier die Spalte in der die Doppel und Triple stehen (früher B und C). Hier musst du also immer 7 dazu addieren.

Du musst also jede Zeile im überprüfen, ob die entsprechenden Verweise auf Zeilen und Spalten noch stimmen.

Falls du nicht klarkommst, lade einfach mal deine neue Tabelle hoch.

Gruß

M.O.

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

erst einmal vielen lieben Dank für die Antwort.

Habe es sofort probiert das umzusetzen was du vorgeschlagen hast und sitze seit dem daran, kriege es nicht hin.

Folgendes möchte ich, wenn möglich. In den Spalten CL4 bis CQ15 vorher A4 bis F15 kann ich ändern, damit habe ich kein Problem aber die Anzahl der Tripple und Doppel werden nicht mehr angezeigt. Da die Werte in den Spalten nicht nach der Eingabe in Zelle CL4 bis CQ15  den Zellen erfolgt sondern davor und das schaffe ich einfach nicht.

Die Spalten K bis CF werden ausgeblendet somit ergibt sich das Bild wie ich es mir vorgestellt habe.

Wenn die Eingabe Felder der Zellen CL4 Usw. geändert sind werden die Spalten A bis F ausgeblendet. Löschen kann ich diese nicht, da in Spalte a19 bis CK170 Daten vorhanden sind, die für die Berechnung notwendig sind.

Wäre SUPER wenn du dafür eine Lösung hättest.

Ps. Bei dem Sound kann man da noch Zusätze einbringen? No score bei Klick Zelle E15 auf 0 und wenn ich auf  Zelle J6 klicke Soll Game on angesagt werden Mp3 ist 998

Lade die Datei jetzt schicke sie gleich nach

Vorab erst einmal Danke

https://filehorst.de/d/dfHJcFvC
+1 Punkt
Beantwortet von m-o Profi (22.7k Punkte)
Hallo Adde,

ich schaue mir das mal an.

Das mit dem Sound sollte das geringste Problem sein.

Gruß

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

Vielen Dank für deine Antwort.

Gruß Adde
+1 Punkt
Beantwortet von m-o Profi (22.7k Punkte)
ausgewählt von halfstone
 
Beste Antwort

Hallo Adde,

wenn ich das richtig sehe, hat sich außer dem Bereich für die Eingabe ja nichts geändert, d.h. die Punkte für die einzelnen Spieler sowie die Anzahl der Doppel und Tripple werden ja in den gleichen Zellen wie bisher ausgegeben.

Daher waren gar nicht so große Änderungen wie ich erst gedacht hatte notwendig.

Probiere mal den folgenden Code aus:

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

Dim lngSpieler As Long
Dim lngSpalte As Long
Dim lngWurf As Long
Dim lngDT As Long
Dim strSpiel As String
Dim lngZeile As Long
Dim lngSZeile As Long
Dim lngWZeile As Long
Dim lngWSpalte As Long
Dim lngAnsage As Long

'Nur bei Klick im Bereich von CL5 bis CQ15 ausführen
If Intersect(Target, Range("J6,CL5:CQ15")) Is Nothing Then Exit Sub

'nicht in Zelle klicken
Cancel = True

'Bei Klick in J6 = Game on - Ansage starten
If Target.Address = "$J$6" Then
  lngAnsage = 998
  'Ansage starten
  Start_Ansage (lngAnsage)
  'dann Makro wieder verlassen
  Exit Sub
End If
    
'Nummer des Spielers einlesen
lngSpieler = Range("G1").Value
 
'Spalte für Spieler ermitteln; Spieler stehen in Spalten K bis AH
lngSpalte = 8 + lngSpieler * 3
 
'Prüfen ob Zelle verbunden ist
If Target.Cells.Count > 1 Then
   'falls ja dann die entsprechenden Werte in Variable schreiben
    If Target.Address = "$CL$15:$CM$15" Then lngWurf = 25
    If Target.Address = "$CN$15:$CO$15" Then
         lngWurf = 50        '50 Zuweisen
         lngDT = 2           'Marker für Doppel setzen
    End If
    
      'prüfen, ob Fehlwurf
      If Target.Address = "$CP$15:$CQ$15" Then lngWurf = 0
    
  Else
   'falls kein Fehlwurf
      lngWurf = Target.Value
      If Target.Column = 91 Or Target.Column = 94 Then lngDT = 2   'Marker für Doppel setzen
      If Target.Column = 92 Or Target.Column = 95 Then lngDT = 3   'Marker für Triple setzen
End If
    
'wenn Überworfen, dann Wurfergebnis auf Null setzen
If Cells(6, lngSpalte) - lngWurf < 0 Then lngWurf = 0
   
 
'Zeile für Würfe suchen
'dazu die Nr des Spielers herausfinden und damit Suchstring erstellen
strSpiel = "Sp" & Range("G1")
 
'Zeile für Spiel suchen
For lngZeile = 19 To 128
  If Cells(lngZeile, 1).Value = strSpiel Then
    lngSZeile = lngZeile
    Exit For
  End If
Next lngZeile

'Zeile für Eintrag der Würfe suchen
lngWZeile = 19 + WorksheetFunction.RoundDown(Cells(lngSZeile, 10).Value / 3, 0)
   
    
'Spalte für den Eintrag der Würfe ermitteln
lngWSpalte = WorksheetFunction.RoundDown(Cells(lngSZeile, 10).Value / 3, 0) + 2

'Anzahl Würfe erhöhen
Cells(lngSZeile, lngWSpalte) = Cells(lngSZeile, lngWSpalte).Value + 1

'Anzahl Doppel erhöhen
If lngDT = 2 Then Cells(11, lngSpalte + 1) = Cells(11, lngSpalte + 1).Value + 1
'Anzahl Triple erhöhen
If lngDT = 3 Then Cells(11, lngSpalte + 2) = Cells(11, lngSpalte + 2).Value + 1

'Würfe eintragen
Cells(lngWZeile, lngSpalte + Cells(lngSZeile, lngWSpalte).Value - 1) = lngWurf

'Daten für die Rücknahme des Wurfes in das Array schreiben
arrRueck(0) = lngSZeile                                            'Zeile für Eintrag des Wurfs
arrRueck(1) = lngWSpalte                                           'Spalte für Eintrag des Wurfs
arrRueck(2) = lngSpalte                                            'Spalte für Spieler
arrRueck(3) = lngWZeile                                            'Zeile für Ergebnis des Wurfs
arrRueck(4) = lngSpalte + Cells(lngSZeile, lngWSpalte).Value - 1   'Spalte für Ergebnis des Wurfes
arrRueck(5) = lngDT                                                'Doppel oder Triple

'hier für die Ansage
'prüfen ob Anzahl der Würfe ohne Rest durch 3 Teilbar ist oder Checkout vorliegt
If Cells(lngSZeile, lngWSpalte).Value Mod 3 = 0 And Cells(1, lngSpalte).Value <> "Checkout" Then
  lngAnsage = Cells(lngWZeile, lngSpalte + Cells(lngSZeile, lngWSpalte).Value - 1) + Cells(lngWZeile, lngSpalte + Cells(lngSZeile, lngWSpalte).Value - 2) + Cells(lngWZeile, lngSpalte + Cells(lngSZeile, lngWSpalte).Value - 3)
  Start_Ansage (lngAnsage)
End If

'Checkout; 999 = Game over
If Cells(1, lngSpalte).Value = "Checkout" Then Start_Ansage (999)

End Sub

Die Ansage "No score" kommt allerdings nur, wenn überworfen wurde oder alle drei Würfe Null sind.

Bei den Zellen für 25, 50 und 0 habe ich jeweils 2 Zellen verbunden (genauso wie vorne).

Gruß

M.O.

0 Punkte
Beantwortet von addeguddi Experte (2.5k Punkte)

Hallo M.O.

heartlichen Dank 

jetzt ist es wirklich so wie ich es mir gedacht habe. Alles FUNKTIONIERT.

Bezüglich einer Dart Tabelle werde ich bestimmt keine Frage mehr stellen. Du hast so viel Herzblut da rein gesteckt und mich so unterstützt das man das mit Worten nicht ausdrücken kann.

Wenn ich ich könnte, würde ich dir gerne 100.000 Punkte geben.

Lieben Gruß Adde

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

Hallo Adde,

gern geschehen smiley.

Und man soll nie nie sagen wink.

Gruß

M.O.

...