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

Opgelost Ingevulde cellen vergrendelen na opslaan bestand

Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.

Lena089

Gebruiker
Lid geworden
2 jul 2024
Berichten
5
Hallo,

Ik heb een excel bestand wat door meerdere mensen gebruikt word. Nadat de cellen A5 t/m H8 ingevuld zijn zullen deze vergrendeld worden om te voorkomen dat ze door iemand anders gewijzigd kunnen worden. Nou kan ik dat doen met een VBA maar loop er tegen aan dat mensen vaak een typefout maken. Dan moeten ze voor elke cel die ze willen wijzigen eerst het wachtwoord intoetsen om de beveiligen op te heffen.

Is er een mogelijkheid om de ingevulde cellen pas te vergrendelen nadat het bestand wordt opgeslagen? Dan kan men alle ingevulde cellen nog eens controleren en aanpassen zonder elke keer het wachtwoord in te vullen.
Als dan het document op een later moment weer geopend wordt moeten de ingevulde cellen vergrendeld zijn, de lege cellen zullen echter nog in te vullen zijn zonder een wachtwoord in te toetsen.

Alvast bedankt voor jullie hulp!
 

Bijlagen

Is het misschien een optie om met validatielijsten te werken zodat er geen typfouten gemaakt kunnen worden?
Met welke excel versie werk je?
Ik zie n.l. dat het voorbeeldbestandje nog een .xls format is.
 
Validatielijsten ken ik niet. Zou dat werken als er bijvoorbeeld een verkeerd datum of verkeerd lot-nummer wordt ingevuld?

Excel versie is 2016.
 
Kijk eens naar dit.
Wachtwoord is 123
Wijzig iets en sla op.
 

Bijlagen

Laatst bewerkt:
Dank je wel edmoor! Dat is een mooie toevoeging.
Echter moet je dan alsnog eerst het wachtwoord invullen voordat je de lege cellen in kan vullen.
Waar ik op zoek ben is dat de lege cellen zonder wachtwoord ingevuld kunnen worden.
 
Ok, zo dan?
 

Bijlagen

Ja super! Hoe heb je dat gedaan? Ik moet er nog zo'n 600 excel bestanden aanpassen.
 
Het is een stukje VBA in de ThisWorkbook module:
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If MsgBox("Zijn de ingevulde gegevens correct?", vbYesNo + vbQuestion) = vbYes Then
        ActiveSheet.Unprotect "123"
        For Each cl In Range("A5:H" & Range("A:A").End(xlDown).Row)
            cl.Locked = IIf(cl.Value = "", False, True)
        Next cl
        ActiveSheet.Protect "123"
    Else
        ActiveSheet.Unprotect "123"
    End If
End Sub
 
Graag gedaan.
En welkom bij Helpmij.
 
En als je echt 600 Excel bestanden moet aanpassen zou je dat met onderstaande code kunnen automatiseren. Een loopje programmeren dat een voor een alle te wijzigen Excel bestanden opent en daar onderstaande code op los laat. Maar je moet er dan wel zeker van zijn dat de ThisWorkbook CodeModules overschreven mogen worden. Je kunt ook eerst even testen of er code in die modules staat via VBCodModDest.CountOfLines
Code:
Public Sub CopyModule()
    Dim VBCodModSrc As Object ' source codemodule
    Dim VBCodModDest As Object ' destination codemodule
     
    Set VBCodModSrc = Workbooks("Map1").VBProject.VBComponents("ThisWorkbook").CodeModule
    Set VBCodModDest = Workbooks("Map2").VBProject.VBComponents("ThisWorkbook").CodeModule
     
    ' deletes all text in the target module
    VBCodModDest.DeleteLines 1, VBCodModDest.CountOfLines
     
    ' copies text from source to destination module
    VBCodModDest.AddFromString VBCodModSrc.Lines(1, VBCodModSrc.CountOfLines)
 
End Sub
 
@ Ah

Liever zó:

CSS:
Sub M_snb_export()
   ThisWorkbook.VBProject.VBComponents(2).Export ThisWorkbook.Path & "snb.bas"
End Sub

CSS:
Sub M_snb_import()
   ThisWorkbook.VBProject.VBComponents.Import ThisWorkbook.Path & "snb.bas"
End Sub
 
@snb
Ik denk dat je dat niet getest hebt, gezien het ontbreken van een backslash. Maar het gaat hier niet om een werkbladmodule maar om een Workbook_BeforeSave event in de ThisWorkbook module. Hoe zou je dat aanpakken?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan