PNG32 PNG32 PNG32 PNG32
PNG32
Forum Excel, VBA, VSTO, Exceltips, Excelhj�lp PNG32 drivs av Excelspecialisten    Logga in     English
PNG32
PNG32 PNG32
PNG32

Logga in

PNG32

Du är inte inloggad. Logga in eller registrera dig för att skriva inlägg eller svara på inlägg.

För frågor om forumet, kontakta oss på webmaster@excelforum.se

PNG32 PNG32
PNG32 PNG32
PNG32

Excelforum

PNG32

 
ForumForumDiskussionerDiskussionerVBAVBALåsa upp indirekt sidaLåsa upp indirekt sida
Föregående Föregående
 
Nästa Nästa
Nytt inlägg
 2022-03-22 07:34
 

 Hej jag har en arbetsbok med olika kalkylblad för olika år som normalt är skyddade utan password. Jag skulle vilja låsa upp blad indirekt utifrån vilket värde jag har i ett visst namngivet område. Tex om värdet är 2022 vill jag låsa upp kalkylbladet som heter 2022. 

Vilka VBA-kommandon krävs för att genomföra detta?

 

Nytt inlägg
 2022-03-22 17:21
 

 om du spelar in ett makro så ser du att koden för att låsa upp är:

    Sheets("2022").Unprotect

Då kan du klistra ihop det med värdet från en cell. typ

FlikAttLåsaUpp = CStr(Sheets("blad1").Range("a1").Value)

Sheets(FlikAttLåsaUpp).Unprotect

Där Csrt konverterar siffor (2022) till en textsträng. Annars kommer Excel att leta efter blad nr 2022

 

Om det namngivna område heter "ValdFlik" så skulle den här raden göra hela jobbet. 

Sheets(CStr(Range("ValdFlik").Value)).Unprotect

Men, Eftersom duinte är bekant med kommandona så bör du dela up det på flera rader och skriva kommentarer

För att låsa kan du göra någonting i den här stilen

Sheets(CStr(Range("ValdFlik").Value)).Protect _
DrawingObjects:=True, Contents:=True, Scenarios:=True

 

Om du vill låsa upp så fort du ändrar värdet i ValdFlik så måste du köra händelsehantering och då kan det bli lite småskumt.

Högerklicka på fliknamnet där du ändrar vald flik etc och välj "visa kod" och klistra in någonting i den här stilen


Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address <> Range("ValdFlik").Address Then Exit Sub

Sheets(CStr(Range("ValdFlik").Value)).Unprotect

End Sub

 

Eller den här - som du får i hemläxa att lista ut vad den gör

Private Sub Worksheet_Change(ByVal Target As Range)

Dim i As Integer

If Target.Address <> Range("ValdFlik").Address Then Exit Sub

For i = 2 To Sheets.Count

    Sheets(i).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

Next i

Sheets(CStr(Range("ValdFlik").Value)).Unprotect

 

End Sub

 
Föregående Föregående
 
Nästa Nästa
ForumForumDiskussionerDiskussionerVBAVBALåsa upp indirekt sidaLåsa upp indirekt sida

PNG32 PNG32
Excelforum drivs av Excelspecialisten som bedriver utbildning i Excel och VBA, tillhandahåller support och hjälp med Excel, utvecklar program i Excel. Är ni i behov av en konsult inom Excel, VBA eller VSTO, eller söker en excelkurs, kontakta oss.
Copyright 2013 ExcelSpecialisten XLS AB   Användarvillkor  Personliga uppgifter