Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1120to1124
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sperrung von Zellen per Makro steuern

Sperrung von Zellen per Makro steuern
Zellen
Liebe Ex(cel)perten,
ich bitte um Hilfe bei folgender Aufgabenstellung:
In einer Tabelle für die Erfassung von Spielergebnissen sollen nur die Erfassungszellen frei gegeben werden. Die Berechnungszellen bleiben gesperrt.
Die Tabelle ist für 3 bis 6 Spieler gestaltet. Jeder spielt gegen jeden. Ich hatte gedacht, die Freigabe über ein Makro zu steuern. Steuerelemente für 3, 4, 5 oder 6 Spieler, die jeweils die Freigabe bzw. Sperrung regeln.
In meiner beigefügten Tabelle sind 4 Teilnehmer eingetragen. Die Eingabezellen F18 und H18 sollten in diesem Fall gesperrt sein, bei 6 Teilnehmern müssten Eintragungen möglich sein.
Hat jemand eine Idee?
https://www.herber.de/bbs/user/66347.xls
Vielen Dank im Voraus für Eure Unterstützung!
Gruß Lutz

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Sperrung von Zellen per Makro steuern
04.12.2009 03:01:30
Zellen
Hallo Lutz,
hier mein Lösungsvorschlag.
Gruß
Franz
Sub EingabeZellen()
Dim wks As Worksheet, AnzahlSpieler As Long, Bereich As Range, Zeile As Long
'Zellbereiche in Spielplan-Blättern
Const RangeSpielerNamen As String = "C9:C14" 'Bereich mit den 1 bis 6 Spielernamen
Const Zeile1 As Long = 16 ' 1. Zeile mit Spielpaarunge
Const Zeile2 As Long = 30 ' letzte Zeile mit Spielpaarunge
Const Spalte1 As Long = 2 ' 1. Spalte mit Spieler-Nr. - Spalte B
Const Spalte2 As Long = 5 ' 2. Spalte mit Spieler-Nr. - Spalte E
Call passwortraus
For Each wks In ActiveWorkbook.Worksheets
With wks
Select Case .Name
Case "Datenblatt", "TabXYZ" 'Liste ggf. um weitere Tabellennamen ergänzen ohne  _
Spieltabellen
'do nothing
Case Else
'Anzahl Spieler in Gruppe
Set Bereich = .Range(RangeSpielerNamen)
AnzahlSpieler = 0
For Zeile = 1 To Bereich.Rows.Count
If Bereich.Cells(Zeile, 1)  "" Then
AnzahlSpieler = AnzahlSpieler + 1
End If
Next Zeile
'Lock-Status für Ergebniseingabe in den Spielpaarungen an Anzahl Spieler anpassen
For Zeile = Zeile1 To Zeile2
If .Cells(Zeile, Spalte1) >= 1 And .Cells(Zeile, Spalte1) = 1 And .Cells(Zeile, Spalte2) 

Anzeige
AW: Sperrung von Zellen per Makro steuern
04.12.2009 10:06:15
Zellen
Hallo Franz,
erst einmal vielen Dank für Deinen Lösungsvorschlag.
Leider bin ich mit meinen stümperhaften VBA-Kenntnissen nicht in der Lage, den Code in meiner Tabelle zum Laufen zu bekommen.
Wenn ich den Code als Makro auslöse, erhalte ich die Fehlermeldung "Fehler beim Kompilieren - Sub oder Function nicht definiert".
Wo liegt mein Fehler? Bist Du so nett und beschreibst die Anwendung?
Viele Grüße
Lutz
AW: Sperrung von Zellen per Makro steuern
04.12.2009 14:11:39
Zellen
Hallo Lutz,
diese Prozedur fügst du im Code-Modul des Tabellenblatts "Datenblatt" hinter den bereits vorhandenen Prozeduren ein.
Alternativ kannst du auch ein allgemeines Modul in deiner Datei anlegen und dort alle Prozeduren einfügen - auch die, die du schon unter Tabelle "Datenblatt" angelegt hast. Dann muss du aber die Makros neu zu den Buttons zuweisen.
Gruß
Franz
Anzeige
AW: Sperrung von Zellen per Makro steuern
05.12.2009 11:43:28
Zellen
Hallo Franz,
Danke für Deine Erläuterungen und Deine Geduld!
Wie von Dir beschrieben habe ich Deine Prozedur hinter die anderen beiden kopiert. Leider erreiche ich allerdings nicht das gewünschte Ergebnis . Beim Auslösen des Makros erhalte ich die MS Visual Basic Fehlermeldung "400".
Vielleicht erläutere ich noch einmal ausführlich den Dateiaufbau und mein Anliegen:
Zur Fehleranalyse habe ich die aktuelle Dateiversion beigefügt. Wegen der Größenbegrenzung beim Upload auf 300 kB musste ich einige Mappen löschen. Tatsächlich besteht die Datei aus dem Tabellenblatt „Dateneingabe“ 2 x 4 Tabellenblätter für die Vorrunde und 2 Tabellenblätter für die Finalrunde.
https://www.herber.de/bbs/user/66383.xls
Mit der Eingabe im Blatt „Dateneingabe“ erfolgt die Verteilung der Namen der Teilnehmer in die Vorrundenblätter. Dort werden die Namen in die obere Hälfte (Platzierungstabelle) und in die untere Hälfte (Ergebniseingabe) weiter gegeben.
Die Gruppenanzahl und Größe richtet sich nach der Anzahl der Teilnehmer. Bei weniger als 6 Teilnehmern je Gruppe fallen einige der vorgegebenen Spielpaarungen aus. In diesen Fällen sollen diese Ergebniszellen für die Anwender gesperrt sein. Eingaben sollen nur für die Ergebnisse der tatsächlich angesetzten Spiele möglich sein. Siehe z. B. Blatt "Mä 1" - bei 3 Teilnehmern gibt es auch nur 3 Spiele. Die restlichen Ergebniszellen sollten in diesem Fall für Eingaben gesperrt sein.
Die Makros zum Ein- und Ausschalten des Passwortes für alle Mappen sind nur für die „Admins“ gedacht, falls grundsätzliche Änderungen am Dateiaufbau nötig sind. Die Sperrung bzw. Freigabe der Zellen für die Ergebniseingabe sollte aber für die Anwender ohne Passworteingabe möglich sein.
Leider ist mir eine Anpassung Deines Lösungsvorschlags auf die gewünschten Anforderungen nicht möglich. Dürfte ich deshalb weiter auf Deine Unterstützung hoffen?
Vielen Dank und herzliche Grüße
Lutz
Anzeige
AW: Sperrung von Zellen per Makro steuern
05.12.2009 19:04:47
Zellen
Hallo Lutz,
das Eingabeblatt hatte bei dir jetzt einen anderen Namen. Dadurch kam es zu dem Fehler weil in der Zeile
      Case "Datenblatt", "TabXYZ" 'Liste ggf. um weitere Tabellennamen ergänzen ohne  _
Spieltabellen
Der Tabellenblattname nicht stimmte.
Den Blattschutz muss man ein- und ausschalten, wenn man den Schutz der Zellen ändern will. Es wird jetzt in der Routine das Passwort direkt verwendet - ohne den Umweg über das Eingabefenster.
Gruß
Franz
https://www.herber.de/bbs/user/66387.xls
Anzeige
AW: Sperrung von Zellen per Makro steuern
06.12.2009 19:33:18
Zellen
Hallo Franz,
was soll ich sagen? Optimal gelöst - genau wie ich es mir im besten Fall vorgestellt hatte.
... und als Zugabe hast Du an die Verlinkung vom Dateneingabe mit den einzelnen Gruppenblättern gedacht - danke vielmals für Deine Hilfe!
Verbeugung und viele Grüße ...
Lutz
AW: Sperrung von Zellen per Makro steuern
07.12.2009 15:03:56
Zellen
Hallo Franz,
zunächst noch einmal vielen Dank für Dein Makro, das grundsätzlich einwandfrei läuft. Allerdings bin ich beim Austesten auf Probleme gestoßen, daher habe ich eine Nachfrage zur Handhabung.
Zum einen hatte ich manchmal nach der Eingabe im Tabellenblatt "Dateneingabe" unerwartete Verzerrungen in der Ansicht, die nach dem Wechseln in ein anderes Tabellenblatt verschwanden.
Bei der Fehlersuche bin ich darauf gekommen, dass dieser Fehler offensichtlich an der Position der Schreibmarke in den nachgeordneten Tabellen zum Zeitpunkt der Eingabe liegt. Befindet sich der Cusor in einem anderen Tabellenblatt in einer nicht frei gegebenen Zelle, wird die Bildschirmansicht verzerrt dargestellt.
Der zweite Fehler trat beim Nachtragen von Teilnehmern auf. Mit dem erneuten Auslösen des Makros zum Freischalten der Eingabefelder wurden die bereits eingetragenen Ergebnisse im betroffenen Tabellenblatt gelöscht und die Bildschirmansicht ebenfalls verzerrt.
Offensichtlich muss bei der Dateneingabe streng die Reihenfolge beachtet werden.
1. Der Cusor in allen Mappen zu Beginn auf Zelle F16
2. Zunächst alle Teilnehmer in allen Gruppen eintragen
3. Erst zuletzt das Makro "Spielplan-Eingabefelder freischalten" auslösen
Da das Programm von vielen Anwendern mit geringen Excel-Kenntnissen verwendet wird, möchte ich Fehlerquellen so gering wie möglich halten. Gibt es aus deiner Sicht weitere Bedingungen, die bei der Anwendung zu beachten sind?
Viele Grüße
Lutz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige