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

Mit VBS in Excel bestimmte Zellen vom Blattschutz befreien

Discussion in 'Programmieren' started by Marcnesium84, Jun 4, 2008.

Thread Status:
Not open for further replies.
  1. Hallo.

    Folgendes Problem:

    Ich habe eine Excel Tabelle erstellt die generell mit einem Blattschutz versehen ist (einige Felder nicht um dort auch Werte zur Berechnung eingeben zu können)

    Folgendes:

    Ich möchte wenn in der Zelle C1 "Bearbeiten" steht, dass in der ohnehin schon passwortgeschützten Tabelle NUR die Zellen C2:C52 zur Bearbeitung freigegeben werden.

    Das Feld C1 sollte jedes mal wenn man die Tabelle öffnet wieder frei sein, sodass C2:C52 nicht dauerhaft vom Blattschutz befreit sind.

    Ich habe leider gar keine Erfahrungen mit VBS und habe nichts gefunden was mir hilft :aua:

    Danke für eure Antworten:bet:
     
  2. pbroll

    pbroll ROM

    Hallo Marcnesium84,

    bei mir klappt's unter Excel 2003.

    Wenn Du Deine Excel-Tabelle geöffnet hast, gehst Du mit Alt - F11 in den VisualBasic Editor.
    Dort siehst Du Dein VBAProject (Arbeitsmappe, Tabelle1, ...)
    Mit Doppelklick auf das gewünschte Tabellenblatt öffnet sich ein Fenster, in das Du Folgendes einträgst:
    ----------------------------------------------------------
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Column = 3 And Target.Row = 1 Then
    If Target = "Bearbeiten" Then
    ActiveSheet.Unprotect
    Range("C2:C52").Select
    Selection.Locked = False
    Selection.FormulaHidden = False
    ActiveSheet.Protect​
    Else
    ActiveSheet.Unprotect
    Range("C2:C52").Select
    Selection.Locked = True
    Selection.FormulaHidden = False
    ActiveSheet.Protect​
    End If
    Cells(2, 3).Select
    End If​
    End Sub
    --------------------------------------------------------
    Es git hier noch bestimmt jede Menge Möglichkeiten zur Verbesserung, aber so funktionierts (hoffentlich bei Dir auch) auf jeden Fall :cool:

    Viel Erfolg,

    Peter
     
  3. Danke dir! Habe das ganze jetzt noch mit meinem Passwort für den Blattschutz versehen und es klappt.

    Code:
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Column = 3 And Target.Row = 1 Then
    If Target = "Bearbeiten" Then
    ActiveSheet.Unprotect Password:="meinPasswort"
    Range("C2:C58").Select
    Selection.Locked = False
    Selection.FormulaHidden = False
    ActiveSheet.Protect Password:="meinPasswort"
    Else
    ActiveSheet.Unprotect Password:="meinPasswort"
    Range("C2:C58").Select
    Selection.Locked = True
    Selection.FormulaHidden = False
    ActiveSheet.Protect Password:="meinPasswort"
    End If
    
    Cells(2, 3).Select
    End If
    End Sub
    Nun noch eine Kleinigkeit (hoffentlich).
    Man muss ja um bestimmte Zellen ändern zu können "Bearbeiten" in C1 eingeben. Ich möchte aber, dass diese Eingabe nach dem Speichern der Datei nicht mehr vorhanden ist, sodass man die Zellen nicht dauerhaft nach dem ersten Speichern ändern kann.

    Ich möchte also erreichen, dass eine Änderung von C1 nicht beim Speichern übernommen wird.

    Eine Idee?

    Danke
     
  4. pbroll

    pbroll ROM

    Wenn Du die Zelle C1 automatisch löschen willst, musst Du im VBAProject auf "Diese Arbeitsmappe" doppelklicken und in diesem Fenster folgendes eingeben:

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Range("C1").Select
    Selection.ClearContents
    End Sub

    Du siehst in dem geöffneten Fenster ganz oben zwei Auswahlfelder.
    Im linken steht dann "Woorkbook" und im rechten "BeforeClose".
    Wenn Du auf das rechte Feld klickst, siehst Du, was noch für Aktionen möglich sind.
    So kannst Du z.B. "open" wählen und erhälst dann automatisch:

    Private Sub Workbook_Open()

    End Sub

    und kasst dann dort die Aktionen eintragen, die beim Öffnen der Datei erfolgen sollen.

    Liebe Grüße

    Peter
     
Thread Status:
Not open for further replies.

Share This Page