Registriert seit: 12.03.2023
Version(en): 365
Hallo und guten Tag.
Normalerweise arbeite ich nur geschäftlich mit Excel, hatte jetzt aber mal aus Spaß einen Kniffelblock erstellt. Einen Screenshot füge ich bei.
Wenn Spieler1 einen Wert eingegeben hat soll sein Block automatisch gesperrt werden, so dass Spieler2 seine Eingabe machen kann und umgekehrt. Gibt es eine Lösung dafür? Zu beachten ist, dass die Werte in den Feldern Full House, kleine Straße, große Straße und Kniffel durch Doppelklick automatisch eingegeben werden (VBA-Script), während die anderen durch die unterschiedlichen Würfe manuell eingegeben werden müssen. Diese Werte können entweder 1 oder 2 stellig sein. In Teil 1 werden diese Eingaben durch die Datenüberprüfung auf Plausibilität geprüft.
Keine einfache Aufgabe, denke ich mal. Ich habe es wochenlang versucht und habe bisher keine Lösung gefunden.
Vielleicht jemand von euch?
Herzliche Grüße
Norbert
26865
Nicht registrierter Gast
Wenn ohnehin VBA am Werk ist:
- Blatt schützen mit UserinterfaceOnly auf True
- Zellen Spieler 1 auf Locked=False setzen, Spieler 2 auf Locked= True
- Change-Ereignis abfangen, wenn (gültiger) Eintrag, dann
- Zellen Spieler 1 auf Locked=True setzen, Spieler 2 auf Locked= False
- usw.
Kniffel war hier vor kurzem Thema, falls du mal schauen möchtest, was andere für Ideen hatten:
https://www.clever-excel-forum.de/Thread...-einfuegen
26865
Nicht registrierter Gast
Simple Codeskizze:
Code:
'Allgemeines Modul
Option Explicit
Public Sub PlayersTurn(ByRef PlayerNumber As Long)
Dim PlayerAktiv As Range, PlayerInaktiv As Range
Set PlayerAktiv = IIf(PlayerNumber = 1, Range("Spieler1"), Range("Spieler2"))
Set PlayerInaktiv = IIf(PlayerNumber = 1, Range("Spieler2"), Range("Spieler1"))
If Application.CountA(PlayerAktiv) < PlayerAktiv.Cells.Count Then PlayerAktiv.SpecialCells(xlCellTypeBlanks).Locked = False
PlayerAktiv.Interior.ColorIndex = 4
PlayerInaktiv.Locked = True
PlayerInaktiv.Interior.ColorIndex = 3
End Sub
Code:
'DieseArbeitsmappe
Option Explicit
Private Sub Workbook_Open()
Range("Spieler1").Worksheet.Protect userinterfaceonly:=True
Call PlayersTurn(PlayerNumber:=1)
End Sub
Code:
'Tabellenblatt des Kniffelblocks
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case True
Case Not Intersect(Target, Range("Spieler1")) Is Nothing
Call PlayersTurn(PlayerNumber:=2)
Case Not Intersect(Target, Range("Spieler2")) Is Nothing
Call PlayersTurn(PlayerNumber:=1)
End Select
End Sub
Ich habe die Bereiche für die Einträge benannt als "Spieler1" und "Spieler2", da ich deine Mappe trotz deines Bildchens nicht kenne. Selbstredend kannst du die auch im Code oder anders definieren.
Registriert seit: 16.08.2017
Version(en): 2007 / 2010 / Web
14.03.2023, 12:04
(Dieser Beitrag wurde zuletzt bearbeitet: 14.03.2023, 12:26 von Elex.)
Moin
Alternativ von @rate mit:
https://www.clever-excel-forum.de/Thread...ht=KniffelIch würde hier auf die Zurücktaste verzichten und gleich nach Eingabe der Zahl automatisch schließen lassen.
Die Verwendung der Vielzahl an UF wäre auch noch mal zu überdenken.
Gruß Elex
Registriert seit: 29.09.2015
Version(en): 2030,5
14.03.2023, 12:17
(Dieser Beitrag wurde zuletzt bearbeitet: 14.03.2023, 12:18 von snb.)
1. Daten besser strukturieren (nicht alsPpapier, doch als Database)
2. Daten unsichtbar für Spieler
3. Ein Userform verwenden
4. Ein separates Arbeitsblatt oder Userform zum Zeigen von Ergebnisse.
Registriert seit: 12.03.2023
Version(en): 365
Erst einmal vielen Dank für die schnellen Antworten.
Ich werde dann mal die dargestellten Lösungswege versuchen.
Die Originaltabelle sowie eine Erläuterung dazu schicke ich mit. Ihr könnt sie gerne selber verwenden, anpassen oder was ihr wollt.
Kniffelblock-v01.xlsm (Größe: 105,78 KB / Downloads: 2)
Herzliche Grüße
Norbert