• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Aanpassen of wissen van cellen voorkomen zonder blad te beveiligen

Status
Niet open voor verdere reacties.

corvdh

Gebruiker
Lid geworden
29 aug 2010
Berichten
128
Kan ik voorkomen dat bepaalde cellen met daarin een formule worden aangepast of gewist zonder het werkblad te beveiligen?
De gebruiker moet wel alles met de file kunnen doen maar mag geen cellen met formulles wissen of aanpassen.

Nu heb ik de valideren functie gebruikt en voorkom zo wel dat een cel niet kan worden aangepast maar de cel kan nog altijd wel gewist worden.

Iemand een idee?
 
Dan zou je moeten voorkomen dat de gebruiker überhaupt in een cel kan klikken door de muis dan naar een naastgelegen cel te verplaatsen bijvoorbeeld. Maar dat is ook niet waterdicht, want als de gebruiker de macro's uit zet, kan hij/zij alsnog naar hartelust zijn/haar gang gaan. Beveiligen is de veiligste optie.
 
Selecteer vooraf je hele bereik en kies voor celeigenschappen. Haal vervolgens bij bescherming het vinkje weg (de blokkade) terwijl dus ALLES is geselecteerd.
Stel nu voor de cellen waarvan je niet wil hebben dat ze gewijzigd kunnen worden het vinkje weer in en beveilig het blad met een ww.
Probeer uit de bijlage B1 maar eens te verwijderen. Probeer het daarna met A1.
 

Bijlagen

  • Map1.xlsx
    11 KB · Weergaven: 78
Laatst bewerkt:
Da's volgens mij niet de oplossing die TS wil :). Dat kan-ie ook vast al wel.
Kan ik voorkomen dat bepaalde cellen met daarin een formule worden aangepast of gewist zonder het werkblad te beveiligen?
 
Dat moeten we maar even afwachten, want de omgekeerde blokkeermethode is lang niet bij iedereen bekend. Als TS die wel kende, dan ga ik met je mee, maar dan begrijp ik niet waarom hij de ww beveiliging niet wil gebruiken, want die doet dan geen afbreuk aan zijn wensenlijstje.
Ik neem / nam aan dat het hoofddoel van TS is dat users alles kunnen en mogen met het werkblad. Als hij die omgekeerde blokkeermethode nog niet kende, dan snap ik zijn opmerking over het niet willen beveiligen van het werkblad, want dan houdt alles op. Kende hij deze methode nog niet, dan is er v.w.b. een werkblad wachtwoord blokkade geen enkel beletsel (meer) om dit wel in te (willen) stellen.
 
Laatst bewerkt:
De omgekeerde methode kende ik.
Het gaat hier om een tabel van meer dan 2000 regels met filters in elke kolom.
Ook heb ik er verschillende macro's ingezet die bijvoorbeeld automatisch bepaalde kolommen filtert, weergeeft of verbergd.
Zet ik er een wachtwoord op dan moet ik al mijn macro's aanpassen.

Wat ik wil is alleen kolom V en de eerste regel van de tabel beveiligen via bijvoorbeeld VBA.
 
Ik heb een manier gevonden om op een onbeveiligd werkblad te voorkomen dat kolom V word aangepast.
De wijziging of het verwijderen van de cel inhoud word door deze macro automatisch weer ongedaan gemaakt.
Deze code plaats ik achter het werkblad.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

    
    Set KeyCells = Range("Table1[Test" & Chr(10) & "kolom V" & Chr(10) & "test]")
    
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then

        
            Dim lngAntwoord As Long
    CreateObject("WScript.Shell").Popup "Deze cel mag niet aangepast worden.", 2, "Fout", vbCritical
    With ActiveCell.Offset(, 0).Range("A1")
    .Select
    End With
        With Application
        .EnableEvents = False
        .Undo
        .EnableEvents = True
    End With

       
    End If
End Sub
En hier de macro om te voorkomen dat de kolomtitels aangepast of verwijderd worden.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

    
    Set KeyCells = Range("Table1[#Headers]")
    
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then

        
            Dim lngAntwoord As Long
    CreateObject("WScript.Shell").Popup "Deze cel mag niet aangepast worden.", 2, "Fout", vbCritical
    With ActiveCell.Offset(, 0).Range("A1")
    .Select
    End With
        With Application
        .EnableEvents = False
        .Undo
        .EnableEvents = True
    End With

       
    End If
End Sub
Alleen als ik een kolomtitel wis word automatisch door Excel de kolomtitel veranderd naar de naam Kolom1.
Ik kan deze kolomtitel dan niet meer aanpassen naar de originele naam door dat de macro dit dan niet toelaat.

Wat ik wil is deze twee macro's samenvoegen tot één macro en het probleempje met de kolomtitels zoals hier boven uitgelegd verhelpen, dan zou het perfect zijn.
 
Laatst bewerkt:
Je zou het zo kunnen doen:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Union(Columns(22), Rows(1))) Is Nothing Then Exit Sub
    MsgBox "au"
    With Application
        .EnableEvents = False
        .Undo
        .EnableEvents = True
    End With
End Sub

Je kunt het ook zo proberen (in de thisworkbook-module):
Code:
Private Sub Workbook_Open()
    Sheets(1).Protect Password:="SchaapKam33l", DrawingObjects:=True, Contents:=True, Scenarios:=True, [B]UserInterfaceOnly:=True[/B]
End Sub
Hiermee gebruik je werkbladbeveiliging.
De dikgedrukte switch zorgt ervoor dat je code kan doorlopen en dat alleen gebruikershandelingen worden geblokkeerd. Dan hoef je niet al je macro's aan te passen.
 
Laatst bewerkt:
Eerste oplossing werk goed behalve als ik bij rij 1 een cel wis dan gebeurt er het volgende:

1) Excel veranderd de kolomtitel van de tabel automatisch naar Kolom1.
2) De macro start, MsgBox verschijnt, ik klik op Ok.
3) De kolomtitel veranderd terug naar wat hij was voor de wijziging en dan verschijnt weer de MsgBox, ik klik weer op Ok.
4) Nu veranderd de naam weer terug naar Kolom1, en die naam kan ik dan niet meer aanpassen naar de oorspronkelijke naam omdat de macro dit niet toelaat.

Kan dit nog aangepast worden?
 
Grappig is dat als je vervolgens de undo-button klikt het vierstappenplan zich in omgekeerde volgorde voltrekt.
Ik heb er geen oplossing voor. Mijn advies: gebruik werkbladbeveiliging met een Workbook_open-event zoals ik heb beschreven (plan B).
 
Maak de kolom verborgen en gebruik

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   If Target.Column = 22 Then
      Application.Goto Cells(1)
      Columns(22).Hidden = True
   End If
End Sub
 
Even voor de duidelijkheid, het probleem treed alleen op bij de kolomtitels in rij 1, bij de cellen in kolom V (vanaf cel V2 en verder) gaat het wel goed.
De code van snb snap ik niet helemaal, wil je dit even toelichten?
Ik wil namelijk kolom V wel zichtbaar houden.
 
Heb je de code al getest ?

Waarom wil je kolom V zichtbaar houden als de gebruiker er niets mee mag doen ?
 
In kolom V staat een formule en de uitkomst daarvan moet zichtbaar zijn voor de gebruiker.
 
Dat in kolom V formules staan had ik al begrepen....
Dan zet je de resultaten van die verborgen kolom toch gewoon ergens anders neer ? (de kolom met formules kan natuurlijk ook kolom BZ zijn).

Code:
Private Sub Workbook_Open()
   with sheets(1).columns(22).specialcells(-4123)
      .offset(,-2)=.value
   end with
End Sub

Dan kunnen de dames/heren naar hartelust wijzigingen aanbrengen in kolom T.
Bij heropening van het werkboek wordt alles weer in prettige staat hersteld.
Gecombineerd met mijn eerdere suggestie lijkt me dit een aardige 'beveiliging' zonder beveiliging.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan