Brisanje (izbira) vseh nezaščitenih celic

Pomoč pri izdelavi makrov
Odgovori
jumanjy
Prispevkov: 133
Pridružen: To Jan 12, 2010 1:00 pm

Brisanje (izbira) vseh nezaščitenih celic

Odgovor Napisal/-a jumanjy »

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 :roll: .
Kaj mi svetujete?

lp
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Brisanje (izbira) vseh nezaščitenih celic

Odgovor Napisal/-a admin »

Pozdravljeni,

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 = "")
lp,
Matjaž Prtenjak
Administrator
jumanjy
Prispevkov: 133
Pridružen: To Jan 12, 2010 1:00 pm

Re: Brisanje (izbira) vseh nezaščitenih celic

Odgovor Napisal/-a jumanjy »

Ž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.

Koda: Izberi vse

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.

Hvala.
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Brisanje (izbira) vseh nezaščitenih celic

Odgovor Napisal/-a admin »

Pozdravljeni,

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:

Koda: Izberi vse

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
lp,
Matjaž Prtenjak
Administrator
Odgovori