Avatar billede NegoZiatoR Nybegynder
24. januar 2013 - 14:49 Der er 10 kommentarer og
1 løsning

Lås celler i flere ark, med undtagelser

Hey allesammen .. :)

Sidder og laver et excel-ark , hvor jeg gerne vil låse hele arket med en kode (Så langt så godt) -

Men jeg vil så gerne åbne for nogen celler inde i arket.

Altså for eksempel (pseudo):

Lås alle celler mellem A1:W45

Lås op alle celler mellem A4:L16

Jeg er begyndt at kigge på en macro, der løber alle 'sheets' igennem, men får en fejl når den skal oplåse på sidst nævnte range.


Kode


Sub WorksheetLoop()

Dim WS_Count As Integer
Dim I As Integer
Dim CurrentSheet As Worksheet

' Set WS_Count equal to the number of worksheets in the active
' workbook.
WS_Count = ActiveWorkbook.Worksheets.Count

' Begin the loop.
For I = 1 To WS_Count
' Select current sheet
Set CurrentSheet = ActiveWorkbook.Worksheets(I)

CurrentSheet.Unprotect Password:="pass"
CurrentSheet.Range("a:w").Cells.Locked = False

' lock row
Set r1 = CurrentSheet.Range("A1:W45")
Set r2 = CurrentSheet.Range("A4:L16")


' unlock rows
Set r2 = CurrentSheet.Range("A4:L16")
'<-- HER GÅR DET GALT

r2.Cells.Locked = False

CurrentSheet.Protect Password:="pass"

Next I
End Sub
Avatar billede excelent Ekspert
24. januar 2013 - 18:06 #1
Alle celler er som standard låst men virker først når du beskytter arket.

Sub test()
For Each sh In ThisWorkbook.Sheets
sh.Range("A4:L16").Locked = False
Next
End Sub
Avatar billede NegoZiatoR Nybegynder
24. januar 2013 - 23:05 #2
Ja, men jeg vil jo gerne have låst følgende op: ("A4:L16")

Men så siger den at den ikke kan selecte den range ? :(
Avatar billede excelent Ekspert
25. januar 2013 - 08:52 #3
ok prøv så denne

Sub test()
For Each sh In ThisWorkbook.Sheets
sh.Unprotect Password:="pass"
sh.Range("A4:L16").Locked = False
sh.Protect Password:="pass"
Next
End Sub
Avatar billede NegoZiatoR Nybegynder
25. januar 2013 - 11:20 #4
Ja, det er også det jeg ville mene..

Men se hvad, der sker når jeg prøver at afvikle det:

Billede:
http://it-guiden.dk/syno/unable.png
Avatar billede excelent Ekspert
25. januar 2013 - 11:35 #5
Dit billede indikerer at det er den første kode du anvender
Avatar billede NegoZiatoR Nybegynder
25. januar 2013 - 11:45 #6
Først låser jeg ALLE celler i alle sheets.

Så kører jeg det script du har sendt - Når jeg debugger, er det ved:

kode:
sh.Range("A4:L16").Locked = False

At det går galt.
Avatar billede excelent Ekspert
25. januar 2013 - 11:52 #7
Kan du ikke sende filen eller et eks på denne så kikker jeg på det
Avatar billede NegoZiatoR Nybegynder
25. januar 2013 - 12:01 #8
Ja, det kan jeg sagtens - men når du ser det så skal du vide at det er meningen at jeg senere vil lave coditional statements på sheet.name, således at det kun er gældende for dem der er relevante.

Når du åbner det, hvis du så går til eks. Hus 2 --> Rum[whatever] -- > Så kan du se, der hvor de kan indtaste info :)

Her ligger det :)

http://it-guiden.dk/syno/LindegaardenOversigtsplan.xlsx
Avatar billede excelent Ekspert
25. januar 2013 - 12:43 #9
ok prøv

Sub test()
Application.ScreenUpdating = False
For Each sh In ThisWorkbook.Sheets
sh.Unprotect Password:="pass"
sh.Select
Range("A4:L16").Select
Selection.Locked = False
sh.Protect Password:="pass"
Next
Application.ScreenUpdating = True
End Sub
Avatar billede NegoZiatoR Nybegynder
25. januar 2013 - 12:51 #10
Hvor er det smukt :)

præcis det jeg vil have -.-

Ok, så man skal slå ScreenUpdating fra først?

:)
Avatar billede excelent Ekspert
25. januar 2013 - 13:00 #11
Jeg fandt frem til at det var nødvendigt at aktivere Ark og selecte celleområdet for at ændre på beskyttelsen
Dette medførte at når koden kører, så flimrer skærmen en del når den hopper fra det ene ark til det næste - derfor Screenup...
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester