Hallo an die Expertenrunde, habe ein neues Projekt begonnen und könnte mal wieder Hilfe gebrauchen. Soll diesmal ein Scorer für ein Dart-Cricket werden. Habe einen Eingabebereich M7:O7 für "Spieler 1" und M8:O8 für "Spieler 2" für jeweils 3 Zahlenwerte, sowie eine leere Zelle M9 Die Eingabe erfolgt über eine Funktastatur (also nur der Zahlenblock zur Eingabe ). Nun möchte ich gerne die Werte von Spieler 1 in Spalte P8:P300 und die von Spieler 2 in Spalte Q8:Q300 speichern. Nach der letzten Eingabe ist der Cursor jetzt in Zelle M9. ( Damit man evtl. nochmal korrigieren kann wenn man sich vertippt hat) Wenn ich jetzt Enter drücke sollen alle Eingaben in M7:O8 gelöscht werden und die nächste Runde kann eingegeben werden, der Cursor ist also wieder in M7. Die neuen Werte sollen dann jeweils wieder ans Ende der Spalte P bzw. Q eingefügt werden und das dann immer so weiter (die Cursorsteuerung ist jetzt nicht das Problem das funktioniert) Hoffe habe mein Anliegen verständlich beschrieben. Sage schon mal vielen Dank im Voraus Gruß Didi
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Static bolM9 As Boolean With Target.Cells() If .Address = "$M$9" Then bolM9 = True Else If bolM9 Then bolM9 = False If Application.WorksheetFunction.CountBlank(Range("M7:O8")) Then MsgBox "Da fehlt noch was!" Application.EnableEvents = False Range("M7:O8").SpecialCells(xlCellTypeBlanks).Cells(1).Select Application.EnableEvents = True Else With Cells(Rows.Count, 17).End(xlUp) .Offset(1, 0).Value = Range("M7").Value .Offset(2, 0).Value = Range("N7").Value .Offset(3, 0).Value = Range("O7").Value .Offset(1, 1).Value = Range("M8").Value .Offset(2, 1).Value = Range("N8").Value .Offset(3, 1).Value = Range("O8").Value End With Range("M7:O8") = "" Range("M7").Select End If End If End If End With End Sub
Ich habe da auch was gebastelt und hoffe, ich habe Dich richtig verstanden – auch wenn ich von Dart keine Ahnung habe. Ich hänge Dir eine Datei an, in der hoffentlich das geschieht, was Du gerne hättest: Die Einzelresultate der beiden Spieler werden von M7:O8 übertragen jeweils ans Ende der Spalten P:Q. Der Bereich M7:O8 wird dann gelöscht.
Eine Aenderung habe ich gemacht: Du sagst: "Wenn ich jetzt Enter drücke, sollen …". Das ist in meinen Augen viel zu "gefährlich". Wie oft drückt man Enter, ohne es zu bedenken! Ich habe es so gemacht: Wenn Du in M9 die Zahl 999 eingibst (statt Enter drücken), dann soll die Prozedur ablaufen.
Ich hoffe, das hilft Dir, und grüsse Dich freundlich Niclaus
Hallo Niclaus, vielen Dank erst mal für dein bemühen. Das was du mir da geschickt hast ist schon mal Super. Ich möchte aber das der Cursor sich nur im Eingabebereich (M7:O8 und M9) bewegt, habe in diesen Zellen also den Schutz rausgenommen und dann das ganze Blatt geschützt. Hacken ist bei nicht gesperrte Zellen auswählen drin und bei gesperrte Zellen auswählen draußen. wenn ich jetzt in M9 deine 999 eingebe dann kommt Laufzeitfehler 1004 (Anwendung- oder objektdefinierter Fehler). Wenn ich den Blattschutz raus nehme, dann funktioniert deine Lösung prima aber der Cursor bleibt dann nicht mehr im Eingabebereich. Gruß Didi
Hallo Uwe, auch an dir erstmal vielen Dank für dein Lösungsvorschlag. Es funktioniert so lange ich den Blattschutz nicht aktiv habe, bei aktivierten Blattschutz kommt dann eine Fehlermeldung. Wenn ich den Blattschutz aufhebe, dann bleibt der Cursor nicht im Eingabebereich, er sollte aber von O7 nach M8 und von O8 nach M9 springen und das macht er nur wenn der Blattschutz aktiv ist. Wäre mir auch wichtig das nur der Eingabebereich nicht gesperrt ist. Gruß Didi
Hallo Didi Ich schicke Dir die Version1. Alle Zellen ausser M7:O8;M9 sind gesperrt. Wenn Du in M9 die Zahl 999 eingibst, wird in den Spalten P:Q die Sperrung deaktiviert. Die Werte von M7:O8 werden nach P:Q übertragen. Die Spalten P:Q werden wieder gesperrt. Ich hoffe, das ist ein Schritt weiter in die richtige Richtung. Grüsse Niclaus
Folgende(r) 1 Nutzer sagt Danke an Niclaus für diesen Beitrag:1 Nutzer sagt Danke an Niclaus für diesen Beitrag 28 • DartDidi
07.03.2021, 19:42 (Dieser Beitrag wurde zuletzt bearbeitet: 07.03.2021, 19:56 von DartDidi.)
Hallo Uwe, Bei deinem Code speichert er es für Spieler 1 ab der Spalte Q2 und für Spieler 2 ab der Spalte R2 ab wenn diese Spalten entsperrt sind. Der Cursor springt dann aber auch von Spalte O (meinem Eingabebereich) nach Spalte Q Hab mal die Datei Test 2 angehängt Gruß Didi Hallo Uwe, Danke für dein Bemühen, es ist schon fast perfekt, aber der Cursor bleibt in Zeile 7 ( er springt von O7 nach P7 usw.) Er sollte nach der Eingabe von O7 nach M8 dann von O8 nach M9 und dann wegen meiner nach der Eingabe von 999 dann die Werte eintragen und wieder nach M7 zurück. Wenn ich den Cursor mit den Pfeiltasten korrigiere dann klappt es so wie ich es meinte Gruß Didi
dann sperre die Zellen wieder und probiere es mit folgendem Code:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Static bolM9 As Boolean With Target.Cells() If .Address = "$M$9" Then bolM9 = True Else If bolM9 Then bolM9 = False Me.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, UserInterfaceOnly:=True If Application.WorksheetFunction.CountBlank(Range("M7:O8")) Then MsgBox "Da fehlt noch was!" Application.EnableEvents = False Range("M7:O8").SpecialCells(xlCellTypeBlanks).Cells(1).Select Application.EnableEvents = True Else With Cells(Application.Max(7, Cells(Rows.Count, 16).End(xlUp).Row), 16) .Offset(1, 0).Value = Range("M7").Value .Offset(2, 0).Value = Range("N7").Value .Offset(3, 0).Value = Range("O7").Value .Offset(1, 1).Value = Range("M8").Value .Offset(2, 1).Value = Range("N8").Value .Offset(3, 1).Value = Range("O8").Value End With Range("M7:O8") = "" Range("M7").Select End If End If End If End With End Sub
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28 • DartDidi
07.03.2021, 20:20 (Dieser Beitrag wurde zuletzt bearbeitet: 07.03.2021, 20:22 von DartDidi.)
Hallo Uwe, das scheint zu funktionieren. Bin begeistert, ein großes Dankeschön an alle die sich an der Lösung beteiligt haben. Gruß von Didi Danke auch an dir, Problem ist gelöst Gruß Didi