Op het werk gebruiken wij complexe spreadsheets die door de organisatie worden verspreid, ingevuld en geretourneerd. Vervolgens worden ze geconsolideerd. Om deze spreadsheets te beveiligen, zit er een macro op die telkens bij openen en sluiten van het bestand alle tabbladen beveiligt. Sommige medewerkers hebben namelijk wel het recht om ieder afzonderlijk tabblad te ontgrendelen om het beveiligde deel aan te passen, sommigen niet (want die vernachelen dan alles). Om er zeker van te zijn dat nooit een deels ontgrendelde sheet bij een medewerker zonder fatsoenlijke Excel-skills terechtkomt, is deze macro er in gezet, die bij openen en sluiten van de macro loopt:
Tevens heb ik deze gemaakt om makkelijk alles te ontgrendelen, die heeft hetzelfde probleem.
Dit werkte prima toen ik de code schreef (of googlede en plakte
) toen wij nog met Office 2010 werkten. Nu zijn we een tijdje geleden overgegaan naar Office 2016 en duurt het uitvoeren van deze macro opeens veel langer. Tevens springt de macro na uitvoeren nu naar de laatste sheet, terwijl die in de oude Office op de sheet bleef staan waar die stond.
Ik kan nergens iets vinden dat de manier waarop VBA werkt gewijzigd zou zijn van 2010 naar 2016. Noch kan een andere manier vinden om te doen wat ik wil.
Iemand enig idee?
code:
1
2
3
4
5
| Private Sub ProtectSheets() For Each sht In ThisWorkbook.Sheets sht.Protect Password:="", UserInterfaceOnly:=True Next sht End Sub |
Tevens heb ik deze gemaakt om makkelijk alles te ontgrendelen, die heeft hetzelfde probleem.
code:
1
2
3
4
5
6
7
| Private Sub UnProtectSheets() Application.ScreenUpdating = False For Each sht In ThisWorkbook.Sheets sht.Unprotect "" Next sht Application.ScreenUpdating = True End Sub |
Dit werkte prima toen ik de code schreef (of googlede en plakte
Ik kan nergens iets vinden dat de manier waarop VBA werkt gewijzigd zou zijn van 2010 naar 2016. Noch kan een andere manier vinden om te doen wat ik wil.
Iemand enig idee?
[ Voor 8% gewijzigd door Patrick_6369 op 16-05-2019 15:00 ]
Hier zou een handtekening kunnen staan.