1.5k Aufrufe
Gefragt in Tabellenkalkulation von addeguddi Experte (2.5k Punkte)
Hallo und einen schönen Tag an das Forum Team,

sitze schon wieder seit Stunden am PC und stöbere in Foren nach Antworten meiner Frage. Habe leider nichts gefunden das mir weiter hilft. Hoffe, dass jemand bei meiner Aufgabe die ich mir gestellt habe, mir eine Lösung mitteilen kann.

Nun mein Problem.

Ich möchte das bestimmte Zellen wenn Bedingung in anderer Zelle erfüllt ist,  gesperrt werden.

Beispiel: Zelle B 7 ist nach Eingabe die Zahl 3 erreicht ,sollen Zellen von A 77 bis G 77 gesperrt werden.

Dies soll fortlaufend sein B 8 Sperre in A 78 bis G 78  und dies ist von Zelle B 7 bis B 18 und Sperre A77 bis

G 88 passieren.

Dies müsste ich dann auch für Andere Zellen verwenden können. Da dies nur für eine Eingabe ist.

Im Voraus erst einmal Danke

Gruß Adde

16 Antworten

+1 Punkt
Beantwortet von beverly_ Experte (3.3k Punkte)
Hi,

wenn ich dich richtig verstanden habe: markiere A77:G88 und erstelle eine Datenüberprüfung -> Benutzerdefiniert =$B7<3.

Bis später, Karin
0 Punkte
Beantwortet von addeguddi Experte (2.5k Punkte)

Hallo schönen Guten Morgen

vielen lieben Dank für die Antwort. Doch leider funktioniert das nicht. Kann immer noch Eintragungen vornehmen.

Da es sich um ein Cricket Dartspiel geht, soll wenn in den besagten Zellen eine 3 erscheint die anderen Zellen gesperrt werden.

Habe in einem Forum eine ähnliche Frage gefunden in VBA habe dies  nach meinen Vorstellungen verändert, weiß nicht ob ich das so verwenden kann . Hier ist jetzt nur ein Spieler berücksichtigt müsste dies für 8 Spieler anwenden können.

Kannst du dir bitte einmal das VBA anschauen.

in B7 bis B 18 steht zum Beispiel eine 1 oder 2 sollen die Zellen 
von A77 Bis G88 nicht gesperrt werden
Wenn aber eine 3 zB. In Zelle B7 Steht soll die Zeile A77 bis G77 gesperrt
werden oder wenn in B10 eine 3 steht soll A80 bis G80 gesperrt werden. 
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$7:$B$18" Then
Select Case Target
Case 1
Range("A77:G77").Locked = False
Case 2
Range("a77:g77").Locked = True
Range("A77:G77").Locked = False
Case 3
Range("A77:G77").Locked = True
Case Else
End Select
End If
End Sub

Wäre dankbar wenn du oder einer deiner Kolleginnen/Kollegen helfen könnten.

LG Adde

+1 Punkt
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Adde,

probiere das folgende Makro, das du in das VBA-Projekt des betreffenden Arbeitsblattes kopieren musst:

Private Sub Worksheet_Change(ByVal Target As Range)

'Bereich in dem die Eingaben überwacht werden sollen
If Not Intersect(Target, Range("B7:B18")) Is Nothing Then
With ActiveSheet
    .Unprotect   'Blattschutz aufheben
    'In Spalten A bis G Zellen entsperren, wenn Wert = 1 oder 2
    If Target.Value = 1 Or Target.Value = 2 Then .Range(.Cells(Target.Row + 70, 1), .Cells(Target.Row + 70, 7)).Locked = False
    'In Spalten A bis G Zellen sperren, wenn Wert = 3
    If Target.Value = 3 Then .Range(.Cells(Target.Row + 70, 1), .Cells(Target.Row + 70, 7)).Locked = True
    .Protect 'Blatt wieder schützen
End With

End If

End Sub


Schau mal, ob du das auch auf deine anderen Spieler umsetzen kannst.

Gruß

M.O.

+1 Punkt
Beantwortet von beverly_ Experte (3.3k Punkte)

Hi,

Zitat: "Doch leider funktioniert das nicht. Kann immer noch Eintragungen vornehmen."

Dann hast du was falsch gemacht -  hast du das $-Zeichen vor B beachtet? Gib mal in der angehängten Beispielmappe in den rot markierten Zeilen etwas ein...

Beispielmappe

Bis später, Karin

0 Punkte
Beantwortet von addeguddi Experte (2.5k Punkte)
Vielen leiben Dank an Euch ,

Karin also das klappt ist Ok. Danke dir für deine Mühe.

Hallo M. O. auch dir möchte ich danken, werde morgen versuchen das mit den anderen Spielern zu erweitern.Hoffe, das ich das hin bekomme.

LG

Adde
0 Punkte
Beantwortet von
okay cool.. was really helpful and informative
0 Punkte
Beantwortet von addeguddi Experte (2.5k Punkte)

Guten Morgen M.O.

Habe das VBA integriert doch leider addiert er immer noch wenn in Zellen B7 bis B18 eine 3 erscheint.

Wenn ich das VBA richtig verstehe überwacht dies, die Zellen, B7:B18 und sperrt dann die Zellen a bis g.

Doch diese sollten nicht gesperrt werden sondern die Zellen A77 bis G77 wenn in B7 die 3 ist. A78 bis G78 wenn in B8 die 3 ist usw..

Wenn ich für die anderen Spieler die Sperre mit einbauen möchte brauche ich (Denke ich) das ich bei Target, Range ("B7:B18","K7:K18","T7:T18" usw. oder ist das FALSCH.

Habe das Cricket Spiel einmal hochgeladen. Wenn du möchtest, kannst du dir das einmal anschauen

https://filehorst.de/d/cfwzjiIi

LG Adde

+1 Punkt
Beantwortet von m-o Profi (22.7k Punkte)
Hallo Adde,

ich hatte den Code entsprechend deiner Problembeschreibung geschrieben. Wird z.B. in B7 eine 3 eingegeben, dann werden die Zellen A77 bis G77 gesperrt.

Ich habe mir mal deine Tabelle angeschaut. Du hast ja in den Zeilen 77 bis 88 jeweils eine Formel stehen (z.B. =R27). Wenn du diese Zelle jetzt schützt, ändert das nichts an der Formel, die darin steht. Diese wird immer noch neu berechnet, wenn sich in Zelle R27 (in der ja auch eine Summenformel steht) etwas ändert. Wenn du Zellen schützt, bewirkt das nur, dass du diese nicht mehr per Hand, d.h. durch Eingaben, ändern kannst. Formeln werden auch bei einem Schutz der Zellen weiter berechnet.

Gruß

M.O.
0 Punkte
Beantwortet von addeguddi Experte (2.5k Punkte)
Hallo M.O.

vielen Dank für die Information. Was könntest du mir vorschlagen wie ich das ändern könnte. Denn das was an Formeln steht soll ja meine Pluspunkte für den Gegner als Minus berechnen. Wenn ich die Formel weg lassen erhalte ich ja kein Ergebnis.

Gruß Adde
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo Adde,

um dir etwas vorschlagen zu können, müsste ich verstehen, was du eigentlich erreichen willst, was ich aber nicht tue.

Ich sehe zwar deine Tabelle und im Prinzip weiß ich auch, was das alles soll, aber bei dem Aufbau deiner Tabelle blicke ich nicht ganz durch.

Was willst du denn mit dem Sperren der Zellen erreichen?

Gruß

M.O.
...