Tabellenspalten sperren nach Klick
#1
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. Huh  Vielleicht jemand von euch?

Herzliche Grüße
Norbert
Antworten Top
#2
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
Antworten Top
#3
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.
Antworten Top
#4
Moin

Alternativ von @rate mit:
https://www.clever-excel-forum.de/Thread...ht=Kniffel

Ich 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. Wink

Gruß Elex
Antworten Top
#5
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.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#6
Erst einmal vielen Dank für die schnellen Antworten. Thumbsupsmileyanim  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. 43
 

.xlsm   Kniffelblock-v01.xlsm (Größe: 105,78 KB / Downloads: 2)
   
Herzliche Grüße Heart

Norbert
Antworten Top


Gehe zu:


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