..|| Blog || Produkti/Storitve || MExcel || MDodatki || 300 nasvetov ||..

Brisanje (izbira) vseh nezaščitenih celic

Pomoč pri izdelavi makrov

Brisanje (izbira) vseh nezaščitenih celic

OdgovorNapisal/-a jumanjy » Sr jul 15, 2015 2:28 pm

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
jumanjy
 
Prispevkov: 119
Pridružen: To jan 12, 2010 1:00 pm



Matjazev.NET
 

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

OdgovorNapisal/-a admin » Sr jul 15, 2015 2:45 pm

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
admin
Site Admin
 
Prispevkov: 3529
Pridružen: Sr jul 20, 2005 10:06 pm

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

OdgovorNapisal/-a jumanjy » Sr jul 15, 2015 3:40 pm

Ž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.
jumanjy
 
Prispevkov: 119
Pridružen: To jan 12, 2010 1:00 pm

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

OdgovorNapisal/-a admin » Sr jul 15, 2015 9:38 pm

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
admin
Site Admin
 
Prispevkov: 3529
Pridružen: Sr jul 20, 2005 10:06 pm


Vrni se na VBA

Kdo je prisoten

Po forumu brska: 0 registriranih uporabnikov in 4 gostov

cron