Code zum Speichern der Werte ändern
#11
Hallo Uwe,
erst mal vielen Dank.
Das sieht schon mal ganz gut aus, habe den Code jetzt komplett reinkopiert.
Aber wenn ich die Datei öffne, dann passiert in der ersten Runde erst mal nichts. (es werden keine Werte übertragen)
Ab der zweiten Runde überträgt er es fast so wie ich es wollte er beginnt es bei Spieler 1 nach P7 zu übertragen und bei Spieler 2 nach Q7 er müsste aber bei P8 oder Q8 anfangen.
Sonnst müsste ich die anderen Tabellen umschreiben.
Wenn die Datei bereits offen ist und man löscht alles dann dann überträgt er es gleich in der ersten Runde, allerdings auch nach P7 bzw Q7
Ist hoffentlich nur eine Kleinigkeit!
Lade die Datei nochmal mit hoch.
Noch mal vielen Dank, find ich ganz toll von euch das man hier Unterstützung erhält.
Gruß Didi


Angehängte Dateien
.xls   CricketProjekt3.xls (Größe: 198 KB / Downloads: 1)
Top
#12
Hallo Didi,

damit sollte es klappen:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim lngZ As Long
  With Target.Cells(1)
    If Not Application.Intersect(.Cells, Range("M7:O8")) Is Nothing Then
      Me.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, UserInterfaceOnly:=True
      lngZ = .Row + 9 'Umrechnung Eingabezeile in Ausgabespalte
      On Error Resume Next
      Application.EnableEvents = False
      Cells(Application.Max(8, Cells(Rows.Count, lngZ).End(xlUp).Row + 1), lngZ).Value = .Value
      Application.EnableEvents = True
      On Error GoTo 0
    End If
  End With
End Sub

Gruß Uwe
Top
#13
Hallo Uwe,
Es funktioniert solange richtig, solange die Eingabe im  Gültigkeitsbereich  bleibt.
Gibt man mal eine andere als erlaubte Zahl ein kommt eine Fehlermeldung, das ist von mir auch so gewollt.
Korrigiert man dann jetzt diese Eingabe, dann wird  der jetzt gültige Wert gleich  mehrmals übertragen.
Wenn das noch behoben werden könnte, dann habt ihr einen tollen Job gemacht.
Lade die Datei nochmal hoch, alle Werte die im Spielfeld (Links) schon Rot formatiert sind, sind aus dem Gültigkeitsbereich raus.
Erstmal wieder vielen Dank für euer Bemühen.
 Gruß Didi


Angehängte Dateien
.xls   CricketProjekt4.xls (Größe: 197 KB / Downloads: 0)
Top
#14
Hallo Didi,

das scheint ein Excel-Bug zu sein. Das hab ich auf die Schnelle diesbezüglich gefunden: https://www.herber.de/forum/archiv/1004t...Ereig.html

Mein Vorschlag: Entferne die Datenüberprüfung des Bereichs M7:O8 und probiere folgenden Code, in dem die Überprüfung nun mit drin ist:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim lngZ As Long
  With Target.Cells(1)
    If Not Application.Intersect(.Cells, Range("M7:O8")) Is Nothing Then
      Me.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, UserInterfaceOnly:=True
      lngZ = .Row + 9 'Umrechnung Eingabezeile in Ausgabespalte
      On Error Resume Next
      Application.EnableEvents = False
      If Len(.Value) Then
        If IsError(Application.Match(.Value, Cells(.Row + 4, 20).Resize(, 20), 0)) Then
          MsgBox "Eingabe nicht (mehr) erlaubt!", vbInformation + vbOKOnly
          Target.Select
        Else
          Cells(Application.Max(8, Cells(Rows.Count, lngZ).End(xlUp).Row + 1), lngZ).Value = .Value
        End If
      End If
      Application.EnableEvents = True
      On Error GoTo 0
    End If
  End With
End Sub

Gruß Uwe

(11.03.2021, 14:35)DartDidi schrieb: Wenn das noch behoben werden könnte, dann habt ihr einen tollen Job gemacht.

Schau gerne mal hier: https://www.clever-excel-forum.de/page-p...eruns.html und ganz runter scrollen. Wink

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • DartDidi
Top
#15
Hallo,
Hurra!!! es scheint zu funktionieren.
Werde es am Wochenende mit einem Kumpel testen.
Habe eurem Kassenwart gerade eine mail geschickt.
Werde euch dann eine Spende für euer Verein überweisen, ist versprochen sobald ich eure Daten habe.
Nochmals vielen Dank an euch alle.
Gruß Didi
[-] Folgende(r) 1 Nutzer sagt Danke an DartDidi für diesen Beitrag:
  • Kuwer
Top
#16
Nochmal Hallo,
Tut mir echt leid, dass ich noch mal "störe".
Es funktioniert alles bestens, so wie ich es wollte.
Wäre es noch möglich mir einen Code zu schreiben,
Wenn ich in Zelle M9 bin und Enter drücke das dann der Eingabebereich M7:O8 wieder gelöscht wird.
Man kommt sonnst beim spielen durcheinander, weil man nicht sieht ob es die alten oder schon neuen Werte sind.

Gruß Didi
Top
#17
Hallo Didi,

das war/ist doch drin im Worksheet_SelectionChange-Makro. Wink

Gruß Uwe
Top
#18
Hallo Uwe,
habe nur den Code den ich von euch zuletzt erhalten  habe reinkopiert
Private Sub Worksheet_Change(ByVal Target As Range)

Dann habe ich beide Code zusammen probiert, also den alten und den neuen, passiert auch nichts.
Ich mach erst mal Feierabend, vielleicht komme morgen drauf was gemeint ist.
Gruß Didi
Top
#19
Hallo Didi,

hier noch mal komplett beide Makros:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim lngZ As Long
  With Target.Cells(1)
    If Not Application.Intersect(.Cells, Range("M7:O8")) Is Nothing Then
      Me.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, UserInterfaceOnly:=True
      lngZ = .Row + 9 'Umrechnung Eingabezeile in Ausgabespalte
      On Error Resume Next
      Application.EnableEvents = False
      If Len(.Value) Then
        'jetzt folgt die Gültigkeitsprüfung
        If IsError(Application.Match(.Value, Cells(.Row + 4, 20).Resize(, 20), 0)) Then
          MsgBox "Eingabe nicht (mehr) erlaubt!", vbInformation + vbOKOnly
          Target.Select
        Else
          Cells(Application.Max(8, Cells(Rows.Count, lngZ).End(xlUp).Row + 1), lngZ).Value = .Value
        End If
      End If
      Application.EnableEvents = True
      On Error GoTo 0
    End If
  End With
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Static bolM9 As Boolean
  With Target.Cells()
    If .Address = "$M$9" Then
      If Application.WorksheetFunction.CountBlank(Range("M7:O8")) Then
        Application.EnableEvents = False
        Range("M7:O8").SpecialCells(xlCellTypeBlanks).Cells(1).Select
        Application.EnableEvents = True
      Else
        bolM9 = True
      End If
    Else
      If bolM9 Then
        bolM9 = False
        Me.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, UserInterfaceOnly:=True
        Range("M7:O8") = ""
        Range("M7").Select
      End If
    End If
  End With
End Sub

Gruß Uwe
Top
#20
Hallo Uwe,
habe deinen letzten Code jetzt so reinkopiert, die Datei noch mal geschlossen und wieder geöffnet.
Es funktioniert soweit alles richtig, aber die Werte in M7:O9 werden nicht gelöscht nur nach und nach überschrieben.
Gruß Didi
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste