Avatar billede barthodk Nybegynder
15. august 2011 - 16:36 Der er 1 kommentar og
1 løsning

Lås celle baseret på kriterie

Jeg sidder med en excel template, hvor jeg skal låse input celler, såfremt at afslutningsåret er før input året.

Arket er organiseret med
-inputår horisontalt i toppen i E39:P39
-Afslutningsår vertikalt -S41:S46
-Input celler i E41:N46
-Dataen er arrangeret i rækker

Dvs. hvis mit afslutningsår er i 2014, så skal cellerne i inputområdet låses herefter.

Nogle, der har et forslag?

Det tætteste jeg kan komme på er noget der ligner:
Private Sub Workbook_Open()
    Const PW  As String = "secret"
    Dim rBookings As Range
    Dim cl    As Range
    Dim Area  As Range
    With Sheets("Input")
        .Unprotect PW
        Set rBookings = .Range(.Cells(7, 4), .Cells(7675, 10)).SpecialCells(xlCellTypeConstants)
        For Each cl In rBookings
            Set Area = .Cells(cl.Row, 1).MergeArea
            If Area.Cells(1, 1).Value <= Date Then cl.Locked = True
        Next cl
        .Protect PW
    End With
End Sub
Avatar billede H_Klein Novice
30. august 2011 - 23:39 #1
Hej Barthodk,

Er dette indlæg stadig relevant og hvis ja, har du mulighed for at sende mig en fil via min mail (Kan ses under min profil) så jeg kan se hvad det er du mener helt nøjagtigt?

Vil gerne gøre et forsøg, men er nødt til at se det på skærmen.

Hvis du har mulighed for at knytte et par kommentarer til arket samtidigt så skal jeg nok gøre et forsøg på at finde en brugbar løsning.

Med venlig hilsen

Henrik
Avatar billede H_Klein Novice
02. september 2011 - 21:02 #2
Altså blev det brugbare men ikke videre elegante svar som vist herunder.

-----------------------------------------------

Sub laas_celler()

    Dim RK As Long  'Rækkenr
    Dim KO As Long  'Kolonnenr
    Dim V_A As Long 'Vandret år
    Dim YRK As Long 'Lodret år
    Dim VA As Long  'Vandret årstal
    Dim LAR As Long 'Lodret årstal
   
    ActiveSheet.Unprotect
    Range("E41:N46").Select
    Selection.Locked = False
    Selection.FormulaHidden = False
   
    V_A = 39
    YRK = 19
    RK = 41
    KO = 4
   
    Do
    KO = 5
    Cells(RK, KO).Select
    Do
    VA = Cells(V_A, KO)
    LAR = Cells(RK, YRK)
    Cells(RK, KO).Select
    If VA > LAR Then
    Selection.Locked = True
    Selection.FormulaHidden = False
    KO = KO + 1
    Else
    KO = KO + 1
    End If
    Loop Until KO = 15
    RK = RK + 1
    Loop Until RK = 47 And KO = 15
    Cells(41, 4).Select
    Cells(41, 5).Select
   
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
   
End Sub
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



IT-JOB

Cognizant Technology Solutions Denmark ApS

Sr. Test Analyst

Danske Andelskassers Bank A/S

IT-konsulent