Avatar billede Slettet bruger
15. november 2012 - 23:53 Der er 8 kommentarer og
1 løsning

VBA låser celler.

Hej eksperter!

Jeg har lavet denne fine kode i vba. Men den driller lidt.
Men da en del af arket er låst uden brug af denne. så vil den ikke låse cellerne? - så den skal kun låse de celler som der ikke er allerede låst. pånær D1.

Selve koden låser bestemte celler hvis C1 er over tal 24, men den skal kunne låse op for cellerne igen hvis der indtastes i D1 fks. 200 (Men kun de celler som er låst med denne VBA kode)



Sub Test()

If Range("C1").Value > 24 Then
  'Aktion - gør noget
  Dim s As Worksheet
For Each s In ActiveWorkbook.Sheets
  s.protect "password", AllowFiltering:=True
 
 
Next
If Range("D1").Value > 200 Then
For Each s In ActiveWorkbook.Sheets
  s.unprotect "password"

Next
End If
End If
End Sub

Takker på forhånd :)!
Avatar billede Slettet bruger
16. november 2012 - 00:56 #1
Har fundet ud af hvordan jeg gør af den ikke låser alle celler.
men en der kan nævne hvordan jeg skriver det i koden af den skal kun låse fks. A1:B1000 med koden. selvom de andre celler som sagt allerede er låst... :)
Avatar billede supertekst Ekspert
16. november 2012 - 09:30 #2
Du kan forberede celler - som låste eller ikke låste:
F.eks. - området er ikke forberedt som låst:

    Range("A1:B5").Select
    Selection.Locked = False

Når beskyttelse sættes til er disse celler altså ikke låste
Avatar billede Slettet bruger
16. november 2012 - 22:24 #3
takker!

er det her ikke muligt?

1). A1:B5 skal kunne Låse hvis en vba kode køres via. C1 får en bestemt værdi.
2). C2 Skal aldrig låses.
3). C2 skal kunne låse A1:B5 op igen ved en bestemt værdi.
4). Alle andre celler, altså resten er altid låst.

Syns nemlig ikke jeg kan få lov til af låse bestemte celler, hvis nogle celler er allerede låst i arket.
Avatar billede supertekst Ekspert
16. november 2012 - 22:46 #4
Selv tak - ser på det i løbet af weekenden..
Avatar billede supertekst Ekspert
18. november 2012 - 12:34 #5
C2 kan manuelt forberedes "Ej låst" = fjern flueben i Låst, når denne celle altid skal være "åben".

Const værdiForLås = "lås"
Const værdiForLåsOp = "lås op"
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$C$1" And Target = værdiForLås Then
        'ophæv beskyttelse
        'sæt området til forberedt låst
        'sæt beskyttelse
    End If
   
    If Target.Address = "$C$2" And Target = værdiForLåsOp Then
        'ophæv beskyttelse
        ' området A1:B5 sættes til "ej låst"
        'sæt beskyttelse
    End If

End Sub
Avatar billede Slettet bruger
18. november 2012 - 17:25 #6
Jeg takker for hjælpen supertekst.
Læg gerne et svar :)
Avatar billede supertekst Ekspert
18. november 2012 - 17:59 #7
Selv tak -
Avatar billede Slettet bruger
18. november 2012 - 19:51 #8
Har lige et hurtig spørgsmål,
Hvis det lyster dig af svare på det :).

For Each s In ActiveWorkbook.Sheets
s.protect "password", AllowFiltering:=True

Dette låser alle ark med password.
Hvordan får jeg den til af kun låse "ark1"?
Avatar billede Slettet bruger
19. november 2012 - 22:52 #9
Supertekst jeg offer 50 point,
for du svare på hvordan jeg kan kun låse det ene ark.
hvor med den ikke låser alle ark som denne kode gør.

For Each s In ActiveWorkbook.Sheets
s.protect "password", AllowFiltering:=True
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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