1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Profi Excel Problem: Felder bedingt Sperren

Discussion in 'Office-Programme' started by St.eVe, Jun 4, 2008.

Thread Status:
Not open for further replies.
  1. St.eVe

    St.eVe Kbyte

    hallo,

    ich möchte unter excel eine tabelle erstellen mit der folgenden Funktion.
    Ich möchte in einem Feld den Wert "x" eingeben und wenn dieser Wert in dem Feld drinne ist, soll ein anderes deaktiviert werden, dh. das man dort nichts mehr eintragen kann oder gegraut wird.

    Nur wenn möglich, es in dem gesperrten Feld noch gesperrt oder sowas steht. aber nichts mehr eingetragen werden kann.

    Ich hoffe ihr versteht mein Problem und evtl kann mir das jemand sogar erklären.

    vielen dank
    St.eVe
     
  2. Hascheff

    Hascheff Moderator

    Hallo,
    weißt du, wie man ein Makro "Worksheet_Change" erstellt?
     
  3. St.eVe

    St.eVe Kbyte

    puhh ne du sagt mir atm nix! why?
     
  4. Beverly

    Beverly Halbes Megabyte

    Hi,

    du müsstest schon ein wenig genauer beschreiben, ich welche Zelle du etwas eintragen willst, und welche gespeerrt werden soll.

    Soll in der gesperrten Zelle dann nur drin stehen "gesperrt", oder willst du den Inhalt der Zelle anerweitig verwenden?
     
  5. St.eVe

    St.eVe Kbyte

    ich will in eine zelle ein x eintragen und dadurch soll in einer anderen zelle es nicht mehr möglich sein dort etwas einzutragen.
     
  6. Hascheff

    Hascheff Moderator

    Wenn du Beverlys Frage nicht beantwortest, musst du das Makro nach allgemeinen Hinweisen selbst erstellen.

    Zeichne ein Makro auf, welches die gewünschte Zelle sperrt.

    Unten auf dem Reiter mit dem Tabellennamen klickst du rechts und wählst "Code anzeigen". Im VBA-Editor hast du rechts das große Code-Fenster und dort oben links die Objektliste. Dort wählst du "Worksheet". Rechts davon in der Prozedurliste wählst du "Change".
    In den dann automatisch erstellten Makro-Rahmen kopierst du den aufgezeichneten Sperrbefehl und ergänzt eine If-Bedingung.

    @ Beverly: Skeptisch? Ich auch.

    Edit: @ TO: Eigentlich müsste ich jetzt einen eigenen Thread eröffnen, aber ich will dir mal zeigen, was Beverly von dir will:

    @ Beverly: Ich habe ein ähnliches Problem.

    In D1 steht "fertig", rechts davon in den Spalten E und F jeweils eine Zahl.
    Jetzt möchte ich in den Spalten E und F, angefangen in Zeile 36 alle Zellen sperren, in denen eine Zahl kleiner gleich der darüber in Zeile 1 stehenden Zahl enthalten ist.
     
    Last edited: Jun 5, 2008
  7. Beverly

    Beverly Halbes Megabyte

    Hi,

    markiere alle Zellen -> Format -> Zellen -> Schutz und nimm den Haken bei "Gesperrt" heraus. Schütze anschließend das Tabellenblatt.
    Schreibe diesen Code ins Codemodul der betreffenden Tabelle

    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Count > 1 Then Exit Sub
        ActiveSheet.Unprotect
        If Target = "x" Then Target.Offset(0, 1).Locked = True
        ActiveSheet.Protect
    End Sub
    
    @Hascheff,

    sorry, dein Beitrag wurde mir nicht angezeigt. Kann deine Frage leider erst heute Abend beantworten.
     
    Last edited: Jun 5, 2008
  8. St.eVe

    St.eVe Kbyte

    puh die diskussion blick ich jetzt nicht mehr. gilt die lösung auch für mich? also ihr habt ja meine problem oben gelesen wenn da noch infos für die lösung gebraucht werden von mir. das schreibt es ich versuche es so gut wie möglich zu beschreiben.

    danke
    St.eVe
     
  9. Beverly

    Beverly Halbes Megabyte

    @Steve,

    ja, das ist die Antwort auf dein Problem. Wenn du in eine beliebige Zelle ein "x" schreibst, wird die Zelle rechts daneben für jede Eingabe gesperrt.

    @Hascheff,

    meinst du das so

    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim raZelle As Range
        Dim loLetzt As Long
        If Target.Address <> "$D$1" Then Exit Sub
        If Target = "fertig" Then
            ActiveSheet.Unprotect "Password"
            For Each raZelle In Range("E36:F" & IIf(IsEmpty(Cells(Rows.Count, 5)), Cells(Rows.Count, 5).End(xlUp).Row, Rows.Count))
                If raZelle.Column = 5 And raZelle.Value < Range("E1") Then
                    raZelle.Locked = True
                ElseIf raZelle.Column = 6 And raZelle < Range("F1") Then
                    raZelle.Locked = True
                End If
            Next raZelle
            ActiveSheet.Protect "Password"
        End If
    End Sub
    
     
  10. Hascheff

    Hascheff Moderator

    Hi Beverly,
    fast. "Dass in D1 "fertig" steht, sollte nur Erläuterung sein. Ich denke, ich brauch es so:
    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim raZelle As Range
        Dim loLetzt As Long
        ActiveSheet.Unprotect "Password"
        If Target.Address = "$E$1" and Isnumeric(Target) Then
            For Each raZelle In Range("E36:E" & IIf(IsEmpty(Cells(Rows.Count, 5)), Cells(Rows.Count, 5).End(xlUp).Row, Rows.Count))
                If raZelle.Value <= Range("E1") Then raZelle.Locked = True
            Next raZelle
        End If
        If Target.Address = "$F$1" and Isnumeric(Target) Then
            For Each raZelle In Range("F36:F" & IIf(IsEmpty(Cells(Rows.Count, 6)), Cells(Rows.Count, 6).End(xlUp).Row, Rows.Count))
                If raZelle <= Range("F1") Then raZelle.Locked = True
            Next raZelle
        End If
        ActiveSheet.Protect "Password"
    End Sub
    
    Jedenfalls bedanke ich mich für den Code.
    Allerdings habe ich in beiden Spalten auch leere Zellen mittendrin. Muss ich da Nullen einsetzen?

    @ St.eVe: :sorry:, dass ich dich verwirrt habe. Eigentlich wollte ich zeigen, in welcher Art du dein Problem genauer beschreiben musst. Gut, dass Beverly dich besser verstanden hat.
     
Thread Status:
Not open for further replies.

Share This Page