Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: bestimmte Zellen mit Makro dynamisch entsperren

bestimmte Zellen mit Makro dynamisch entsperren
06.12.2008 11:35:18
Suche
Hallo Leute,
ich suche schon seit Tagen nach einem Makro das mir in einer bestimmten Tabelle (Tabelle 1) folgende Aufgabe übernimmt. (Tabellenblatt ist bis auf A1 gesperrt)
wenn in A1 die Zahl 1 steht nichts machen
wenn in A1 die Zahl 2 steht sollen die Zellen B1, B2 entsperrt werden
wenn in A1 die Zahl 3 steht sollen die Zellen B1, B2 und C1, C2 entsperrt werden
wenn in A1 die Zahl 4 steht sollen die Zellen B1, B2 und C1, C2 und D1 und D2 entsperrt werden
Vieleicht kann mir bei dieser schwierigen Aufgabe einer der Guros hier im Forum helfen?
schon jetzt vielen Dank an den Antwortenden!!
Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: bestimmte Zellen mit Makro dynamisch entsperren
06.12.2008 12:53:58
Beate
Hallo,
das Marko gehört ins Codefenster der Tabelle:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("$A$1")) Is Nothing Then Exit Sub
    If Target.Cells.Count > 1 Then Exit Sub
    Dim v As Integer
    v = Target.Value
    On Error GoTo Ende
    Application.EnableEvents = False
    ActiveSheet.Unprotect
    Cells.Locked = True
    Select Case v
        Case 2
            Range("A1, B1:B2").Locked = False
        Case 3
            Range("A1, B1:C2").Locked = False
        Case 4
            Range("A1, B1:D2").Locked = False
        Case Else
            Range("A1").Locked = False
    End Select
    Ende:
    ActiveSheet.Protect
    Application.EnableEvents = True
End Sub


Guckst Du: Wie und wo fügt man ein Makro bzw. Code ein
Gruß,
Beate
Anzeige
AW: bestimmte Zellen mit Makro dynamisch entsperren
06.12.2008 15:09:55
Suche
Hallo Frau Schmiz,
erst einmal vielen Dank! Die Formel funktioniert in einer leeren Mappe super.
Leider war ich zu doof Ihnen mitzuteilen, dass die Zelle A1 über ein Funktionsfeld gesteuert wird.
Wie müsste die Formel jetz angepasst werden wenn man dies berücksichtigt?
Ich hoffe es macht Ihnen bzw. einem anderen im Forum nicht zu viel Unstende dieses Makro entsprechend anzupassen.
Nochmals schon jetzt vielen Dank beim Ersteller des entsprechenden Makros!!!!!
Anzeige
AW: bestimmte Zellen mit Makro dynamisch entsperren
06.12.2008 15:25:29
Beate
Hallo,
dann könnte man ein Worksheet_Calculate-Makro draus machen. Hat aber den Nachteil, dass es immer anspringt, wenn irgendwo im Blatt eine Neuberechnung geschieht. Das sähe dann so aus:
Private Sub Worksheet_Calculate()
    Dim v As Integer
    v = Range("A1").Value
    On Error GoTo Ende
    Application.EnableEvents = False
    ActiveSheet.Unprotect
    Cells.Locked = True
    Select Case v
        Case 2
            Range("A1, B1:B2").Locked = False
        Case 3
            Range("A1, B1:C2").Locked = False
        Case 4
            Range("A1, B1:D2").Locked = False
        Case Else
            Range("A1").Locked = False
    End Select
    Ende:
    ActiveSheet.Protect
    Application.EnableEvents = True
End Sub


-----------------------------------------------
Daher würde ich es wenn möglich bei einem Worksheet_Change Makro belassen. Und dort in der Zeile:
If Intersect(Target, Range("$A$1")) Is Nothing Then Exit Sub
die Zelle $A$1 austauschen gegen die Zelle, die die Vorgängerzelle von A1 ist und auf einer Eingabe beruht. Dann springt das Makro ja immer an, wenn A1 sich ändert.
Gruß,
Beate
Anzeige
AW: bestimmte Zellen mit Makro dynamisch entsperren
06.12.2008 22:30:13
Suche
Hallo Frau Schmitz,
nochmals vielen vielen Dank für Ihre Hilfe!
Durch die vielen Möglichkeiten von Excel und auch der Makrofunktionen(augezeichnete andere beherrsche ich leider nicht) habe ich mein Excel-Programm noch mal komplet umgeschmissen.
Folgende neue Situation:
Ich habe mehrere nicht gesperrte Felder in mein Excelblatt eingebaut in der der Anwender Eingaben machen kann, alle anderen Felder sind gesperrt.
Allerdings wenn der Anwender in einem Funktionsfeld eine Eingabe macht sollen noch nicht gesperrte (nur bedingt (farblich) formatierte Zellen dann mit einem Makro wie folgt von nicht gesperrt auf gesperrt gesetzt werden:
wenn Funktionszellenwert in AC9 =8 keine Zelle sperren
wenn Funktionszellenwert in AC9 = 7 dann U5 , U7 sperren
wenn " " in AC9 = 6 dann U5, U7 und S5 , S7 sperren
wenn " " in AC9 = 5 dann U5 , U7 und S5, S7 und Q5 , Q7 sperren
wenn " " in AC9 = 4 dann U5 , U7 und S5, S7 und Q5, Q7 und O5 , O7 sperren
wenn" " in AC9 =3 dann U5 , U7 und S5, S7 und Q5, Q7 und O5 , O7 und M5, M7 sperren
wenn" " in AC9 = 2 dann U5 , U7 und S5, S7 und Q5, Q7 und O5 , O7 und M5, M7 sperren
wenn" " in AC9 = 1 dann U5 , U7 und S5, S7 und Q5, Q7 und O5 , O7 und M5, M7 sperren
es währe super nett wenn Sie mir hier noch einmal helfen könnten.
Vielen Vielen Dank!!!!!!!!!!!!!!!!!!
Anzeige
bestimmte Zellen mit Makro dynamisch sperren
06.12.2008 23:05:00
Beate
Hallo,
Private Sub Worksheet_Calculate()
    Dim v As Integer
    v = Range("AC9").Value
    On Error GoTo Ende
    Application.EnableEvents = False
    ActiveSheet.Unprotect
    Cells.Locked = False
    Select Case v
        Case Is < 4
            Range("U5, U7, S5, S7, Q5, Q7, O5, O7, M5, M7").Locked = True
        Case 4
            Range("U5, U7, S5, S7, Q5, Q7, O5, O7").Locked = True
        Case 5
            Range("U5, U7, S5, S7, Q5, Q7").Locked = True
        Case 6
            Range("U5, U7, S5, S7").Locked = True
        Case 7
            Range("U5, U7").Locked = True
        Case Else
            GoTo Ende
    End Select
    Ende:
    ActiveSheet.Protect
    Application.EnableEvents = True
End Sub


Anzeige
oder meinst du so?
06.12.2008 23:21:42
Beate
Hallo,
ich glaube, ich hatte deine Frage zunächst falschrum verstanden und beantwortet. Ich glaube jetzt, du meinst so:
Private Sub Worksheet_Calculate()
    Dim v As Integer
    v = Range("AC9").Value
    On Error GoTo Ende
    Application.EnableEvents = False
    ActiveSheet.Unprotect
    Cells.Locked = True
    Select Case v
        Case Is < 4
            GoTo Ende
        Case 4
            Range("M5, M7").Locked = False
        Case 5
            Range("O5, O7, M5, M7").Locked = False
        Case 6
            Range("Q5, Q7, O5, O7, M5, M7").Locked = False
        Case 7
            Range("S5, S7, Q5, Q7, O5, O7, M5, M7").Locked = False
        Case 8
            Range("U5, U7, S5, S7, Q5, Q7, O5, O7, M5, M7").Locked = False
    End Select
    Ende:
    ActiveSheet.Protect
    Application.EnableEvents = True
End Sub

Gruß,
Beate
Anzeige
AW: oder meinst du so?
07.12.2008 10:27:56
Suche
Hallo Beate:
hat leider nicht geklappt.
Ich habe beide Versionen getestet.
Folgende Probleme:
Da ich dieses "Excel-Programm" für andere Anwender schreibe sollten folgende Punkte erreicht werden ausgehend von der folgenden ist Situation.
IST-Situation:
Die Arbeitsmappe ist bis auf ca. 12 Eingabefelder und drei Funktionsfelder gesperrt damit am Programm nichts verändert werden kann. Wenn jetzt der Anwender im Funktionsfeld (Auswertung auf AC9) angiebt, das nur ein Kind berücksichtigt werden soll (AC9 ist dann 3), dann soll M5 und M7 ungesperrt bleiben und O5, O7 / Q5, Q7/ S5, S7 / U5,U7
die ebenfalls nicht gesperrt waren gesperrt werden, da ich dann vom Anwender kein Geb. Dat. und Laufzeit benötige.
Wenn der Anwender im Funktionsfeld (Auswertung AC9) 2Kinder wählt (AC9 ist dan 4) soll M5 , M7 und O5,O7 ungesperrt bleiben die Zellen Q5, Q7/ S5, S7 / U5,U7 sperren und so weiter.....................
bis max alle hier genannten Zellen ungesperrt bleiben da fünf Kinder eingetragen werden.
Ist der Wert in AC9 kleiner 3 sollen alle hier genannten Zellen gesperrt werden.
Warum benötige ich dieses Makro? Zum einen um bei der Berechnung in einer Anderen Mappe keine falschen Werte zu bekommen weil der Anwender einfach an der falschen Stelle Eingaben gemacht hat und zum zweiten um die Anwendung (das Programm) benutzerfreundlicher zu gestallten da der Anwender mit der Tabulatortaste nur in die nicht gesperrten Felder springen kann.
Eine Passwort Abfrage ist daher auch umbedingt zu vermeiden, da ich ja meine Formeln vor Veränderungen schützen möchte.
Ich hoffe ich habe mich verständlich zu meinem Problem geäussert!?
Anzeige
AW: oder meinst du so?
07.12.2008 10:35:28
Suche
Hallo Beate:
hat leider nicht geklappt.
Ich habe beide Versionen getestet.
Folgende Probleme:
Da ich dieses "Excel-Programm" für andere Anwender schreibe sollten folgende Punkte erreicht werden ausgehend von der folgenden ist Situation.
IST-Situation:
Die Arbeitsmappe ist bis auf ca. 12 Eingabefelder und drei Funktionsfelder gesperrt damit am Programm nichts verändert werden kann. Wenn jetzt der Anwender im Funktionsfeld (Auswertung auf AC9) angiebt, das nur ein Kind berücksichtigt werden soll (AC9 ist dann 3), dann soll M5 und M7 ungesperrt bleiben und O5, O7 / Q5, Q7/ S5, S7 / U5,U7
die ebenfalls nicht gesperrt waren gesperrt werden, da ich dann vom Anwender kein Geb. Dat. und Laufzeit benötige.
Wenn der Anwender im Funktionsfeld (Auswertung AC9) 2Kinder wählt (AC9 ist dan 4) soll M5 , M7 und O5,O7 ungesperrt bleiben die Zellen Q5, Q7/ S5, S7 / U5,U7 sperren und so weiter.....................
bis max alle hier genannten Zellen ungesperrt bleiben da fünf Kinder eingetragen werden.
Ist der Wert in AC9 kleiner 3 sollen alle hier genannten Zellen gesperrt werden.
Warum benötige ich dieses Makro? Zum einen um bei der Berechnung in einer Anderen Mappe keine falschen Werte zu bekommen weil der Anwender einfach an der falschen Stelle Eingaben gemacht hat und zum zweiten um die Anwendung (das Programm) benutzerfreundlicher zu gestallten da der Anwender mit der Tabulatortaste nur in die nicht gesperrten Felder springen kann.
Eine Passwort Abfrage ist daher auch umbedingt zu vermeiden, da ich ja meine Formeln vor Veränderungen schützen möchte.
Ich hoffe ich habe mich verständlich zu meinem Problem geäussert!?
Anzeige
letzter Versuch
07.12.2008 22:30:00
Beate
Hallo,
deine Erklärung weicht von deinen Vorerklärungen ab. Ein letzter Versuch, sonst musst du bitte mal eine Beispieldatei hochladen:
Private Sub Worksheet_Calculate()
    Dim v As Integer
    v = Range("AC9").Value
    On Error GoTo Ende
    Application.EnableEvents = False
    ActiveSheet.Unprotect
    Cells.Locked = True
    Select Case v
        Case Is < 3
            GoTo Ende
        Case 3
            Range("M5, M7").Locked = False
        Case 4
            Range("O5, O7, M5, M7").Locked = False
        Case 5
            Range("Q5, Q7, O5, O7, M5, M7").Locked = False
        Case 6
            Range("S5, S7, Q5, Q7, O5, O7, M5, M7").Locked = False
        Case 7
            Range("U5, U7, S5, S7, Q5, Q7, O5, O7, M5, M7").Locked = False
    End Select
    Ende:
    ActiveSheet.Protect
    Application.EnableEvents = True
End Sub


Gruß,
Beate
Anzeige
letzter Versuch
07.12.2008 22:31:28
Beate
Hallo,
deine Erklärung weicht von deinen Vorerklärungen ab. Ein letzter Versuch, sonst musst du bitte mal eine Beispieldatei hochladen:
Private Sub Worksheet_Calculate()
    Dim v As Integer
    v = Range("AC9").Value
    On Error GoTo Ende
    Application.EnableEvents = False
    ActiveSheet.Unprotect
    Cells.Locked = True
    Select Case v
        Case Is < 3
            GoTo Ende
        Case 3
            Range("M5, M7").Locked = False
        Case 4
            Range("O5, O7, M5, M7").Locked = False
        Case 5
            Range("Q5, Q7, O5, O7, M5, M7").Locked = False
        Case 6
            Range("S5, S7, Q5, Q7, O5, O7, M5, M7").Locked = False
        Case 7
            Range("U5, U7, S5, S7, Q5, Q7, O5, O7, M5, M7").Locked = False
    End Select
    Ende:
    ActiveSheet.Protect
    Application.EnableEvents = True
End Sub


Gruß,
Beate
Anzeige
AW: letzter Versuch
08.12.2008 17:09:00
Suche
Hallo Beate,
ich bin scheinbar zu doof!
Daher lade ich Dir jetzt als hoffentlich wirklich letzten Versuch die Datei

Die Datei https://www.herber.de/bbs/user/57450.xls wurde aus Datenschutzgründen gelöscht


hoch und hoffe Du kannst daraus Deine Schlüsse ziehen respektive meine Fehler die ich gemacht habe ausmerzen.
Vielen Dank für Dein Durchhaltevermögen!!!!!!!!!!!!!!!!
Gruß vom Sucher
Anzeige
AW: letzter Versuch
08.12.2008 21:12:00
Beate
Hallo,
deine Datei ist Kennwortgeschützt. Wie lautet das?
Gruß,
Beate
AW: letzter Versuch
08.12.2008 22:54:00
Suche
Hallo Beate,
das Kennwort lautet: Schutz
Gruß
Sucher
AW: letzter Versuch
08.12.2008 23:22:00
Beate
Hallo,
du hast die Berechnungszelle verlegt und die Zellen die gesperrt/freigegeben werden sollen. Aber du hättest die Zellen auch im Code anpassen müssen:
https://www.herber.de/bbs/user/57464.xls
Gruß,
Beate
Anzeige
andere Funktionsfelder sind auch gesperrt
09.12.2008 14:23:37
Sucher
Hallo Beate,
das mit den benannten Feldern M5 bis U7 klappt super, aber wie ich bereits geschrieben habe soll bei anderen Zellen auch eine Eingabe möglich sein. Aber mit der derzeitigen Formel ist weder das erste Funktionsfeld veränderbar noch sind Eingabefelder die nicht gesperrt wurden nach dem Ausführen des Makros gesperrt.
Wie kann man das entsprechend anpassen ?
Bei meinem Versuch war ab dem Eingabefeld M16 (ist nicht auf der Hochgeladenen Exceldatei) schluss.
D16 D18 und D38 konnte ich noch selber im Makro so einfügen, das diese nach der Auswahl des Funktionsfelds noch beschreibbar waren.
Frage?
Könnte man sperren über die Farbe auch automatisch über ein Makro veranlassen wenn die Zellenfarbe über bedingte Formatierung durch eine Eingabe verändert wird?
Alle weißen ColorIndex = 2 entsperren wäre doch auch eine Möglichkeit oder?
Gruß
Sucher
Anzeige
AW: andere Funktionsfelder sind auch gesperrt
11.12.2008 00:26:01
Beate
Hallo,
starte doch noch mal neu mit deinem jetztigen Stand einen Beitrag. Und bringe deine Punkte alle von vornean mit Beispieldatei. Und nicht immer wieder was ändern. Sag einfach, wo du bist und was du willst.
Ich kann dir nicht mehr helfen.
Gruß.
Beate
AW: andere Funktionsfelder sind auch gesperrt
11.12.2008 08:23:33
Sucher
Hallo Beate,
auch wenn jetzt nicht das gewünschte Ergebnis erreicht wurde, vielen vielen Dank für Deine Bemühungen!
Und ja, ich bin ständig mit einer neuen Situation und Anfrage an Dich heran getreten, aber das liegt wohl daran, dass ich gerade die gewalltigen Möglichkeiten von Excel kennenlerne und diese neuen Möglichkeiten auch in mein Projekt mit einbauen wollte.
Vielen Vielen Dank!
Gruß
Sucher
Anzeige
AW: bestimmte Zellen mit Makro dynamisch sperren
07.12.2008 00:28:29
Suche
Hallo Beate,
schon mal jetzt vielen vielen Dank!
Ich werde es morgen Testen und dann mitteilen obs geklappt hat!!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Dynamisches Entsperren von Zellen in Excel mit Makros


Schritt-für-Schritt-Anleitung

  1. Öffne dein Excel-Dokument. Stelle sicher, dass du die richtige Tabelle ausgewählt hast.

  2. Gehe zum VBA-Editor. Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  3. Füge ein neues Modul hinzu. Klicke mit der rechten Maustaste auf "VBAProject (deine Datei)", wähle Einfügen > Modul.

  4. Kopiere den folgenden Code in das Modul:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Intersect(Target, Range("$A$1")) Is Nothing Then Exit Sub
       If Target.Cells.Count > 1 Then Exit Sub
    
       Dim v As Integer
       v = Target.Value
    
       On Error GoTo Ende
       Application.EnableEvents = False
       ActiveSheet.Unprotect
    
       Cells.Locked = True
    
       Select Case v
           Case 2
               Range("A1, B1:B2").Locked = False
           Case 3
               Range("A1, B1:C2").Locked = False
           Case 4
               Range("A1, B1:D2").Locked = False
           Case Else
               Range("A1").Locked = False
       End Select
    
    Ende:
       ActiveSheet.Protect
       Application.EnableEvents = True
    End Sub
  5. Schließe den VBA-Editor. Gehe zurück zu Excel.

  6. Teste das Makro. Ändere die Zahl in Zelle A1, um zu sehen, ob die entsprechenden Zellen entsperrt werden.


Häufige Fehler und Lösungen

  • Fehler: Zellen werden nicht entsperrt.

    • Lösung: Überprüfe, ob das Makro korrekt im richtigen Arbeitsblatt eingefügt wurde. Stelle sicher, dass die Zelle A1 tatsächlich geändert wird.
  • Fehler: Makro läuft nicht.

    • Lösung: Stelle sicher, dass die Makros in deinem Excel aktiviert sind. Du kannst dies in den Excel-Optionen unter "Trust Center" überprüfen.

Alternative Methoden

Anstelle eines Makros kannst du auch Datenvalidation und Bedingte Formatierung verwenden, um die Eingabe in bestimmten Zellen zu steuern. Dies geschieht durch:

  1. Datenvalidierung: Du kannst die Eingaben in Zellen einschränken.
  2. Bedingte Formatierung: Du kannst Zellen basierend auf ihren Werten formatieren, um die Benutzerführung zu verbessern.

Praktische Beispiele

Nehmen wir an, du möchtest eine Zelle mit einem bestimmten Wert (z.B. 8) entsperren. Du kannst den Code erweitern, um mehr Bedingungen hinzuzufügen. Hier ist ein Beispiel, wie du die Zellen U5 und U7 je nach Wert in AC9 sperren oder entsperren kannst:

Private Sub Worksheet_Calculate()
    Dim v As Integer
    v = Range("AC9").Value

    On Error GoTo Ende
    Application.EnableEvents = False
    ActiveSheet.Unprotect
    Cells.Locked = True

    Select Case v
        Case 8
            Range("U5, U7").Locked = False
        Case 7
            Range("U5, U7, S5, S7").Locked = False
        ' Füge weitere Bedingungen hinzu
    End Select

Ende:
    ActiveSheet.Protect
    Application.EnableEvents = True
End Sub

Tipps für Profis

  • Verwende Kommentare: Kommentiere deinen Code, um später leichter nachvollziehen zu können, was jede Zeile bewirken soll.
  • Backup erstellen: Erstelle vor dem Ausführen von Makros immer ein Backup deiner Excel-Datei, um Datenverlust zu vermeiden.
  • Testen in einer Kopie: Teste deine Makros in einer Kopie der Datei, um sicherzustellen, dass alles wie gewünscht funktioniert.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Zellen gleichzeitig entsperren?
Verwende einen Range Befehl, um mehrere Zellen in einem Schritt zu entsperren, z.B. Range("B1:B5, D1:D5").Locked = False.

2. Was, wenn ich Zellen ohne Makros entsperren möchte?
Du kannst auch den Blattschutz aufheben und manuell die Zellen entsperren, die du für Eingaben freigeben möchtest.

3. Wie kann ich sicherstellen, dass mein Makro nur für bestimmte Benutzer funktioniert?
Du kannst Benutzerberechtigungen in Excel einstellen oder ein Passwort für den Blattschutz verwenden, um unerwünschte Änderungen zu verhindern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige