• 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.

Cellen in 1 werkblad door unieke gebruikers laten beveiligen

Status
Niet open voor verdere reacties.

berny1978

Gebruiker
Lid geworden
16 jan 2013
Berichten
18
Beste mensen,

Ik wil een werkmap maken waarin in een werkblad voor meerdere voertuigen een reservering gemaakt kan worden (zie voorbeeld) en dit delen via een gedeelde netwerklocatie.

In dit voorbeeld moet er in B4 een naam van een persoon kunnen worden ingevoerd (typen of pulldown menu) en cel C4 een reden van reserveren. De volgende cellen (D4 e.v.) moeten dan aangevinkt kunnen worden om de benodigde tijd aan te geven die mensen het voertuig nodig hebben (eventueel met 1 knop of cel voor de gehele dag).

Zodra "Jan" een reservering er in heeft gezet op rij B, moet deze rij 4 worden beveiligd, zodat niemand anders dan "Jan" dit nog kan wijzigen. Behoudens eventueel een beheerder.
Dus als "Piet" op dezelfde dag wilt reserveren, dan moet hij "Jan" niet kunnen verwijderen.
Wil "Piet" echter een andere auto reserveren, bijvoorbeeld rij 5, dan moet daarna die rij door niemand anders dan "Piet" of beheerder te veranderen zijn.
Waardoor dus rij 4 door “Jan” en rij 5 door “Piet” los van elkaar beveiligd zijn en niet anders dan door hen zelf of beheerder kunnen worden aangepast.
Mocht er echter iemand zijn naam weer verwijderen, dan moet de rij weer vrij toegankelijk moeten zijn voor iedereen om te kunnen reserveren.

Is dit mogelijk?
Zo ja, hoe voer ik dit uit?

Ik heb ook zitten overwegen om het zo te laten en te werken met het tonen en onthouden van wijzigingen.
Alleen kan ik nergens ontdekken hoe alleen een beheerder de wijzigingen kan inzien en accepteren of negeren.
In mijn poging kon iedereen daar bij en het dus ook accepteren en negeren, zodat het naderhand niet meer te achterhalen was.

Ik hoop op jullie expertise.

Met vriendelijke groet,

Micha
Bekijk bijlage Piketauto.xlsx
 
Volgens mij moet je hier een eind mee kunnen komen. Ik kan het niet volledig testen, en er zit geen "override" in voor een eventuele beheerder. Deze valt m.i. in te bouwen door een lijstje op te nemen en daar mee te vergelijken. Ook de optionele wijzigingenlijst zit er niet in. En er is één, denk ik klein, nadeel. Je kunt geen wijziging terugdraaien.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

Dim rij, kolom As Long
Dim waardeOud, waardeNieuw As String

    rij = Target.Row
    kolom = Target.Column

    waardeNieuw = Cells(rij, kolom).Value
    Application.EnableEvents = False
    Application.Undo
    waardeOud = Cells(rij, kolom).Value
    Cells(rij, kolom).Value = waardeNieuw

    If kolom > 2 Then
        If Cells(rij, 2).Value <> "" Then
            If Cells(rij, 2).Value <> Application.UserName Then
                Cells(rij, kolom).Value = waardeOud
            End If
        End If
        If Cells(rij, 2).Value = "" Then
            Cells(rij, 2).Value = Application.UserName
        End If
    ElseIf kolom = 2 Then
        If waardeOud <> Application.UserName Then
            Cells(rij, 2).Value = waardeOud
        Else
            If waardeNieuw = "" Then
                Range("C" & rij & ":AB" & rij).ClearContents
            End If
        End If
    Else
        Cells(rij, kolom).Value = waardeOud
    End If

    Application.EnableEvents = True

End Sub
 
Laatst bewerkt:
Sorry, VBA en macro's is een compleet onbekend terrein voor mij.
Ik moet me er dan in gaan verdiepen om dit in te voegen.
Ik zocht eigenlijk een "simpele" excelformule :D

Toch bedankt voor je reactie: ik ga er zeker naar kijken, zodra ik weet hoe dat in z'n werk gaat ;-)
 
Geen probleem. Ook daar kunnen we je doorheen loodsen. Een "simpele" excelformule kan volgens mij niet wat jij vraagt, dus vandaar mijn VBA oplossing.

Hoe moet je te werk gaan om deze oplossing te laten werken?
1. Als je Piketauto.xlsx open hebt druk je op <Alt>+<F11>. De VBA editor wordt geopend.
2. Dubbelklik op Blad1
3. Plak de code in het geopende venster
4. Sla de Excel op als Macro-enabled workbook (extensie .xlsm)

That's it.

Als je nog vragen hebt lees ik het wel ...
 
Dankjewel.
Hiermee kan ik inderdaad de macro aanmaken: weer wat geleerd :thumb:

Alleen kan ik nu in de vakken alleen maar een e-mailadres gebaseerd op de username invullen en onder "reden" kan ik ook niets anders dan dat invullen.
Ten tweede: zodra ik alsnog tot de conclusie kom dat ik toch niet hoef te reserveren, kan ik het vak niet meer leegmaken.
En tot slot kan ik van alles voor de extensie "@bedrijf.nl" invullen: van bestaande gebruikers tot en met onzin namen. Dit betekent dat ik dus ook andere namen kan invullen of overschrijven.
 
?

In het door jou geposte voorbeeld werkt het m.i. perfect, alleen kan ik het niet volledig testen omdat ik niet met meerdere gebruikers in dezelfde sheet kan.

Ik kan in kolom 2 niets zelf invullen. Op het moment dat ik dit doe wordt het veld leeg gemaakt. In kolom 2 wordt de Windows username weggeschreven op het moment dat je een reden invult, of kruisjes plaatst op de betreffende regel. De Windows username wordt weer verwijderd op het moment dat je de regel vanaf kolom 3 leeg maakt.

Waar het op lijkt is dat het voorbeeld v.w.b. kolommen afwijkt van de werkelijke sheet. Klopt dit?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan