|
| Låse kun dele af Excel ark? Fra : NegoZatoR | Vist : 958 gange 200 point Dato : 24-01-13 13:45 |
|
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)
' Replace text from selected range
' LResult = CurrentSheet.Range("B4").Replace("Lavet", "Kommentarer")
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")
r1.Cells.Locked = True
' unlock rows
' Set r2 = CurrentSheet.Range("A4:L16") <-- [B]HER GÅR DET GALT .. [/B]
CurrentSheet.Protect Password:="pass"
Next I
End Sub |
| |
|
Hvad er det lige du vil låse, må man ikke kunne se indholdet, eller må man blot ikke kunne rette i dem?
Normalt vil jeg foreslå at du under celleformat --> sikkerhed, markere de celler du vil låse, og afmarkerer dem der ikke skal være låst. Derefter går fu til "Beskyt ark" laver de indstillinger du vil skal gælde for låste og ikke låste celler, og så lægger en kode på.
| |
| Kommentar Fra : NegoZatoR |
Dato : 24-01-13 22:52 |
|
Jeg vil gerne låse hele dokumentet undtagen Range("A4:L16")
Det du siger jeg kan gøre - det er jeg selvfølgelig klar over, men du kan godt se når jeg måske har noget der ligner 800 sheets inde i min workbook, så vil det tage 112år at komme igennem :-/
Derfor vil jeg bruge en makro til det :)
| |
| Kommentar Fra : NegoZatoR |
Dato : 25-01-13 14:03 |
|
Har fundet ud af det .. :)
Skulle selecte celle området først før jeg kunne ændre på beskyttelsen.
Kode ISub 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 |
| |
| Accepteret svar Fra : meiland | Modtaget 200 point Dato : 25-01-13 14:03 |
|
Prøv denne !
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)
' Remove sheet protection
CurrentSheet.Unprotect Password:="pass"
' lock all rows
Cells.Select
Selection.Locked = True
' unlock rows
Range("A4:L16").Select
Selection.Locked = False
'Protect sheet
CurrentSheet.Protect Password:="pass"
Next I
End Sub
| |
| Kommentar Fra : NegoZatoR |
Dato : 25-01-13 14:05 |
|
Meiland .. :) - Jeps lige præscis .. :)
Du har også lavet Selection inden du ændre på beskyttelsen .. :)
Points all yours :)
| |
| Godkendelse af svar Fra : NegoZatoR |
Dato : 25-01-13 14:06 |
|
Tak for svaret meiland.
Godt arbejde :)
| |
| Du har følgende muligheder | |
|
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.
Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
| |
|
|