< návrat zpět

MS Excel


Téma: VBA Autofilter rss

Zaslal/a 11.6.2017 10:24

Potrebujem jednoduché makro, ktoré mi podľa bunky A1 v hárku Čitateľ vyfiltruje meno v stĺpci F v hárku Výpožičky.

Vo VBA sa veľmi nevyznám, učím sa.
Robil som niečo podľa videa, ale nejde to.

Vďaka za pomoc.

Příloha: rar36650_kniznica.rar (56kB, staženo 28x)
Zaslat odpověď >

#036651
Stalker
Např:takto
Ps: bacha na Criteria1 vs Criterial (1 vs L)
Příloha: zip36651_kniznica.zip (58kB, staženo 36x)
citovat
#036652
avatar
Dikycitovat
#036653
elninoslov
No ale v tomto prípade reaguje makro zmazaním filtra nielen v prípade zmazania bunky A1, ale hociktorej. Malo by teda radšej prísť k nejakej podobnej úprave:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then If IsEmpty(Target) Then Sheets("Výpožičky").AutoFilter.ShowAllData Else Sheets("Výpožičky").Columns("F:F").AutoFilter Field:=6, Criteria1:=Target
End Sub
To je minimalistická jednoriadková, alebo nejako takto:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
If IsEmpty(Target) Then
Sheets("Výpožičky").AutoFilter.ShowAllData
Else
Sheets("Výpožičky").Columns("F:F").AutoFilter Field:=6, Criteria1:=Target
End If
End If
End Sub

To je rozložené a zrozumiteľnejšie.citovat
#036681
avatar
Teraz som zistil problém.
Dostal som podmienku, kde musí byť Hárok Čitateľ vždy skrytý.
Pomocou makra a tlačidiel stále vpisujem do bunky A1 v hárku Čitateľ mená.
Makro mi ale už nefunguje.
(Asi preto, lebo nevie už ten hárok vybrať)
Hľadám iné spôsoby ako opäť spojazdniť autofilter, ale nedarí sa mi to.
Příloha: rar36681_kniznica.rar (62kB, staženo 19x)
citovat
#036682
elninoslov
Bez problémov :
Sub Michal()
Hárok7.Range("A1").Value = "Michal"
End Sub
Sub Lýdia()
Hárok7.Range("A1").Value = "Lýdia"
End Sub
Sub Anna()
Hárok7.Range("A1").Value = "Anna"
End Sub


Ale keď má byť skrytý, a zároveň do neho chcete vpisovať filtrované meno, aby sa vyvolala akcia, tak to nemusí ten list vôbec existovať a použite takéto niečo :
Sub Michal()
Call Filtruj("Michal")
End Sub

Sub Lýdia()
Call Filtruj("Lýdia")
End Sub

Sub Anna()
Call Filtruj("Anna")
End Sub

Sub Vsetko()
Call Filtruj("")
End Sub

Sub Filtruj(S As String)
If S = "" Then
Sheets("Výpožičky").ShowAllData
Else
Sheets("Výpožičky").Columns("F:F").AutoFilter Field:=6, Criteria1:=S
End If
End Sub
Příloha: zip36682_kniznica.zip (59kB, staženo 19x)
citovat
#036683
avatar
Paráda na tomto mi to už funguje.
Avšak ak to použijem aj na druhý excel súbor, nejde mi to.
Chcem to isté len z Hárka Login bunky Q8 vyfiltrovať stlpec F na hárku Výpožičky.

Vysvetlite mi prečo to nejde??
Vlastné výpožičky - Meno : Dominik , Heslo: 9999
Příloha: rar36683_vbgfs.rar (313kB, staženo 20x)
citovat
#036686
elninoslov
Napísal som Vám, že ak má slúžiť to vkladanie filtrovaného mena do nejakej bunky len preto, aby sa tým vyvolala Worksheet_Change, v ktorej potom ten filter nastavíte, tak to robiť nemusíte, ale priamo tam nastavte ten filter. Ak to tak nechcete, budiš, potom ale musíte zmeniť testovanú adresu bunky z $Q$8 na $P$8, lebo to $Q$8 je menené vzorcom, a ten Worksheet_Change nevyvolá. Teda napr.:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$P$8" Then
If IsEmpty(Target) Then
Sheets("Výpožičky").AutoFilter.ShowAllData
Else
Sheets("Výpožičky").Columns("F:F").AutoFilter Field:=6, Criteria1:=Target.Offset(, 1)
End If
End If
End Sub

Dnes sa mi Váš kód už študovať nechce, ak to nieje ono, skúste popísať ako chcete aby to fungovalo...citovat
#036690
avatar
Aha nevedel som, že vzorcom menené pole mi nevyvolá Worksheet_Change

Diky elninoslovcitovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje