Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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)
Antworten 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
Antworten 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)
Antworten 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, 13: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
Antworten 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
Antworten 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
Antworten Top
#17
Hallo Didi,

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

Gruß Uwe
Antworten 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
Antworten 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
Antworten 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
Antworten Top


Gehe zu:


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