Jeg har et problem Jeg ikke selv kan løse. Sikkert et lille problem for en ekspert. Jeg ønsker at låse et ark automatisk efter årets udløb. Enten hele arket, eller 4-5 celler Jeg har prøvet med dato/tal men har nogle konsekvenser, så det er ikke en mulighed. I arket er der celler der i forvejen er låst, samt er der benyttet frys celler. Måske kan en Marco designes til denne opgave. Ps. Hvis det har relevans bruger Jeg Excel 365
Nedenstående makro, som skal lægges ind under ThisWorkbook, låser et valgt område, hvis datoen i A1 ikke er i år
Private Sub Workbook_Open() If Year(Range("A1")) <> Year(Now) Then ActiveSheet.Unprotect Range("B3:C5,C7:C9").Select ' område(r) der skal låses Selection.Locked = True Selection.FormulaHidden = False Range("A1").Select ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End If End Sub
Er der ét og kun ét ark i den pågældende projektmappe?
Den foreslåede makro, som kører, når projektmappen (filen) åbnes, håndterer udelukkende det ark (ActiveSheet), som er aktivt ved filens åbning.
Såfremt der er flere ark i projektmappen, vil jeg foreslå, at makroen oprettes som en Workbook_SheetActivate-event i stedet for Workbook_Open.
Private Sub Workbook_SheetActivate(ByVal Sh As Object) With Sh If Year(.Range("A1")) > Year(Now) Then .Unprotect With .Range("B3:C5,C7:C9") 'Tilpas område som skal låses .Locked = True .FormulaHidden = False End With .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End If End With End Sub
Hvis forskellige ark har forskellige områder, der skal låses, skal der selvfølgelig også tages højde for det.
Alternativt kan makroen kodes, så den gennemløber alle ark, når projektmappen åbnes.
Private Sub Workbook_Open() Dim Sh As Worksheet
For Each Sh In Me.Worksheets With Sh If Year(.Range("A1")) > Year(Now) Then .Unprotect With .Range("B3:C5,C7:C9") 'Tilpas område som skal låses .Locked = True .FormulaHidden = False End With .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End If End With Next Sh End Sub
Lille fejl ... jeg fik kun skrevet "> Year(Now) ".
Det skal enten være "< Year(Now)" (tidligere år) eller evt. "<> Year(Now)", hvis der skal låses for alle årstal, der er forskellige fra indeværende år.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.