Razkrivanje vrstice

Pomoč pri izdelavi makrov
Odgovori
BJ
Prispevkov: 170
Pridružen: Sr Okt 26, 2005 5:46 pm

Razkrivanje vrstice

Odgovor Napisal/-a BJ »

Pozdravljeni!
Na listu imam vrstice od 1 do 20, ki so vidne. Vrstice od 21 pa do 30 pa so skrite.
Ali je možno, ko v vrstici 20, stolpec n.pr. "D" vpišem nek podatek, se razkrije naslednja, to je 21 vrstica in tako naprej?
Hvala za odgovor in LP!
GoldZ
Prispevkov: 137
Pridružen: Če Sep 01, 2005 10:20 am

Odgovor Napisal/-a GoldZ »

Pozdravljeni!

Vse je možno... :D

Koda: Izberi vse

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Offset(1, 0).EntireRow.Hidden = True Then 'če je vrstica pod aktivno celico skrita
    vrstica = Target.Row 'zapomnim si pozicijo vrstice
    stolpec = Target.Column 'pozicija stolpca
    Target.Offset(1, 0).EntireRow.Hidden = False 'razkrijem

End If

Range("a1").Select 
ActiveCell.Offset(vrstica, stolpec - 1).Select 'se postavim v celico

End Sub


Makro deluje, če vpišete vrednost v katero koli celico, ki ima naslednjo vrstico skrito.

Nič niste rekli, kam se naj potem postavi kazalec celice po vnosu. Postavil sem ga eno vrstico nižje.

P.S.: Marko se proži ob dogodku Change, kar pomeni, da se proži samodejno ob vsaki spremembi na listu.
Življenje je enostavno, če poznaš "The Secret".
GoldZ
BJ
Prispevkov: 170
Pridružen: Sr Okt 26, 2005 5:46 pm

Odgovor Napisal/-a BJ »

Žal meni ta makro ne deluje. Vedno, ko vpišem nek podatek in sicer v katerokoli celici (tudi pod skritimi vrsticami), se makro ustavi na:

Koda: Izberi vse

 vrstica = Target.Row 'zapomnim si pozicijo vrstice
Hvala in LPB!
GoldZ
Prispevkov: 137
Pridružen: Če Sep 01, 2005 10:20 am

Odgovor Napisal/-a GoldZ »

Zanimivo... :?:

Meni deluje čisto Ok... Priznam pa, da je en mali "bugec" v kodi.

Koda: Izberi vse


Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Offset(1, 0).EntireRow.Hidden = True Then 'če je vrstica pod aktivno celico skrita
    vrstica = Target.Row 'zapomnim si pozicijo vrstice
    stolpec = Target.Column 'pozicija stolpca
    Target.Offset(1, 0).EntireRow.Hidden = False 'razkrijem
Range("a1").Select
ActiveCell.Offset(vrstica, stolpec - 1).Select 'se postavim v celico

End If


End Sub
Koti vidite, sem prestavil vse znotraj IF stavka... mogoče ga to moti.

Je pa težko iskati rešitev, če ti deluje Ok. :)
Življenje je enostavno, če poznaš "The Secret".
GoldZ
admin
Site Admin
Prispevkov: 3691
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

GoldZ vam je nakazal pravilno pot, ni pa upošteval, da vi želite "odpreti" novo vrstico samo, če nekaj vpišete v kolono D. Koda je torej takšna:

Koda: Izberi vse

Private Sub Worksheet_Change(ByVal Target As Range)
    ' ali sem  koloni D in je notri nekaj vpisano
    If (Target.Column = 4) And (Not IsEmpty(Target)) Then
        ' če je naslednja vrstica skrita, potem jo razkrijem
        If Target.Offset(1, 0).EntireRow.Hidden Then Target.Offset(1, 0).EntireRow.Hidden = False
    End If
End Sub
lp,
Matjaž Prtenjak
Administrator
BJ
Prispevkov: 170
Pridružen: Sr Okt 26, 2005 5:46 pm

Odgovor Napisal/-a BJ »

Najlepša hvala obema za pomoč!
Deluje točno tako, kot sem si zamislil.
LPB
Odgovori