Pozdravljeni,
Imam obrazec v katerem so pomešana območja zaščitenih in nezaščitenih celic. Zdaj pa sem se namenil napisati makro, ki bi mi pobrisal vse nezaščitene celice.
Obstaja kakšna bližnica ali moram v makro vpisati vsako območje posebej? V primeru "bližnice" se bojim, da bi pomotoma sprožil makro, ko je list nezaščiten in bi mi pobrisalo ves obrazec .
Kaj mi svetujete?
To pa je dokaj preprosto. Po celotnem obrazcu se s 'for each' zanko sprehodite po vseh celicah in v kolikor določena celica ni zaščitena (cell.Locked = false) jo pobrišite (cell.value = "")
Žal je moje znanje VBA-ja premajhno da bi znal sam napisat makro. Ste mi pa dali idejo in sem na spletu našel nekaj ter z majhnimi popravki kode mi sedaj deluje.
Sub Gumb1_Klikni()
Dim WorkRange As Range
Dim FoundCells As Range
Dim Cell As Range
Set WorkRange = ActiveSheet.UsedRange
For Each Cell In WorkRange
If Cell.Locked = False Then
If FoundCells Is Nothing Then
Set FoundCells = Cell
Else
Set FoundCells = Union(FoundCells, Cell)
End If
End If
Next Cell
If FoundCells Is Nothing Then
MsgBox "Brisanje ni mogoče vse celice so zaščitene."
Else
FoundCells.Value = ""
End If
End Sub
Če vam ni odveč pa lahko še vi napišete svojo varianto.
saj implementacija ideje je pravilna, le da koda, ki ste jo pobrali verjetno služi namenu identificiranja vseh nezaščitenih celic za nadalnjo obravnavo, kar pa v vašem primeru ni potrebno, saj ko najdete nezaščiteno celico jo pač pobrišete in tako je koda precej krajša in malce hitrejša:
Sub Gumb1_Klikni()
Dim WorkRange As Range
Dim Cell As Range
Set WorkRange = ActiveSheet.UsedRange
For Each Cell In WorkRange
If Cell.Locked = False Then Cell.Value = ""
Next
End Sub