Avatar billede tvc Seniormester
24. januar 2011 - 20:36 Der er 11 kommentarer og
1 løsning

Forbud mod indtastning i celler med fed-formatering

Hej

Jeg har brug for en VBA kode til sikring af at der ikke kan tastes i celler, der er formateret fed.

Er der en der kan hjælpe med dette?
Avatar billede tvc Seniormester
24. januar 2011 - 20:37 #1
Glemte lige at sige, at det kun skal fungere på et bestemt ark (ikke alle ark i mappen).
Avatar billede store-morten Ekspert
24. januar 2011 - 22:24 #2
Nu er der ikke mange oplysniger om arkets ombygning men:
Kan du ikke låse celler der er formateret fed og så beskyt ark?
Avatar billede tvc Seniormester
24. januar 2011 - 23:19 #3
Jo det var en mulighed, men det vil tage lang tid og gøre arket mindre fleksibelt.

Teksten står i kolonne B og der skla tastes i kolonne L.
Avatar billede store-morten Ekspert
24. januar 2011 - 23:40 #4
"Teksten står i kolonne B og der skal tastes i kolonne L."
Det må du forklare nærmere.
Avatar billede gnowak Nybegynder
25. januar 2011 - 08:15 #5
Jep, du skal blot søge i alle anvendte celler "for each" og låse dem med fed skrift. Derefter kan du beskytte arket.

VH. GrN.dk
Avatar billede tvc Seniormester
25. januar 2011 - 13:27 #6
Et eksempel kunne være:
I kolonne B står der en tekst og i kolonne C og D står der tal.


Anders        10    10      S
Bo            10    12      S
Casper        15    23      I
Dan          20    12      S
Erik          10    13      I
I alt        65    70

I alt står med FED og der må ikke kunne tastes i kolonnen hvor der står S eller I (S og I er indtastet).

Jeg vil meget gerne undgå at låse arket.

gnowak -> Hvordan anvender du søgefunktionen med "for each" og får denne til at fjerne beskyttelsen fra alle ikke "fed" celler i dataområdet?
Avatar billede gnowak Nybegynder
25. januar 2011 - 13:34 #7
Man kan fjerne beskyttelsen via noget i retning af:

range.Locked = False
range.FormulaHidden = False

VH. GrN.dk
Avatar billede store-morten Ekspert
25. januar 2011 - 19:50 #8
Jeg kan ikke forstå hvad det er du vil.

"I alt står med FED og der må ikke kunne tastes i kolonnen hvor der står S eller I (S og I er indtastet)."
???

Jeg vil meget gerne undgå at låse arket.
Så kan du vel ikke beskytte noget?

Lidt eksempler:

1. marker hele arket ved at højreklik på firkant til venstre for A og lige over 1, vælg 'formater celler'.
Fanebladet 'Beskyttelse' --> klik flere gange på 'Låst' indtil firkanten er tom.
Nu er hele arket 'Låst' op

Eks. 1 Denne beskytter tallene i kollonne C og D hvis der står S eller I i kolonne E
Sub BeskytTal_S_I()

ActiveSheet.Unprotect

For Each a In Worksheets(1).Range("E1:E5")
If a.Value = "S" Or a.Value = "I" Then
a.Offset(0, -1).Select
Selection.Locked = True
a.Offset(0, -2).Select
Selection.Locked = True
End If
Next

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

End Sub


Eks. 2 Denne beskytter celler med Fed i området: B1:E6
Sub BeskytFed()

ActiveSheet.Unprotect

For Each a In Worksheets(1).Range("B1:E6")
If a.Font.Bold = True Then
a.Offset(0, 0).Select
Selection.Locked = True
End If
Next

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

End Sub


Eks. 3 Denne beskytter celler i kollonne E (E1:E5) hvis der står S eller I i cellen
Sub Beskyt_S_I()

ActiveSheet.Unprotect

For Each a In Worksheets(1).Range("E1:E5")
If a.Value = "S" Or a.Value = "I" Then
a.Offset(0, 0).Select
Selection.Locked = True
End If
Next

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

End Sub
Avatar billede tvc Seniormester
26. januar 2011 - 00:04 #9
Eksempel 2 er næsten hcad jeg skal bruge.

Jeg har lagt det ind i Ark1 og rettet VBA'en til følgende:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Unprotect

For Each a In Ark1.Range("E1:E9")
If a.Font.Bold = True Then
a.Offset(0, 0).Select
Selection.Locked = True
End If
Next

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Programmet går dog død i a.Offset(0, 0).Select
Avatar billede store-morten Ekspert
26. januar 2011 - 18:50 #10
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("E1:E9")) Is Nothing Then

ActiveSheet.Unprotect

For Each F In Worksheets(1).Range("E1:E9").Cells
If F.Font.Bold = True Then
F.Offset(0, 0).Locked = True
Else: F.Offset(0, 0).Locked = False
End If
Next

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If

End Sub
Avatar billede tvc Seniormester
26. januar 2011 - 21:04 #11
Super - store-morten

Det var lige det jeg skulle bruge - TAK!

Lægger du et svar?
Avatar billede store-morten Ekspert
26. januar 2011 - 22:45 #12
Velbekomme.

Godt det lykkedes :-)
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