Attribute VB_Name = "Module1" Sub LihavoiCurrRegion() Range("A7").CurrentRegion.Font.Bold = True End Sub Sub PoistaLihavointiCurrRegion() Range("A7").CurrentRegion.Font.Bold = False End Sub Sub NaytaCurrRegion() MsgBox Range("A7").CurrentRegion.Address End Sub Private Sub SuodattimetPaalle() If Not Worksheets("AsLista").AutoFilterMode Then Worksheets("AsLista").Range("A7").AutoFilter End If End Sub Private Sub SuodattimetPois() If Worksheets("AsLista").AutoFilterMode Then Worksheets("AsLista").Range("A7").AutoFilter End If End Sub Private Sub Lajittele(ByVal Sar As String) If (Len(Sar) = 1) And (UCase(Sar) >= "A") And (UCase(Sar) <= "E") Then ActiveSheet.Range("A7").Sort Key1:=Worksheets("AsLista").Columns(Sar), Header:=True End If End Sub Sub TestaaLajittele() Lajittele ("A") End Sub Sub SuodataRivi() Dim Rivi As Long Rivi = InputBox("Valitse näytettävä rivi") Worksheets("AsLista").Range("A7").AutoFilter Field:=1, Criteria1:=Rivi End Sub Sub DjaELuokanAsiakkaat() Worksheets("AsLista").Range("A7").AutoFilter _ Field:=4, Criteria1:="D", Criteria2:="E", Operator:=xlOr End Sub Sub NaytaKaikkiRivit() 1 Worksheets("AsLista").ShowAllData End Sub Sub DLuokanAktiivisetAsiakkaat() Worksheets("AsLista").Range("A7").AutoFilter Field:=4, Criteria1:="D" Worksheets("AsLista").Range("A7").AutoFilter Field:=5, Criteria1:=1 End Sub Sub NaytaHakuehdot() 'NaytaHakuehdot-aliohjelma selaa kaikki suodattimet yksi kerrallaan läpi ja lisää sellaisen suodattimen MsgStr-merkkijonoon, jossa on jokin haluehto määriteltynä. 'Toiminto alkaa riviltä 3, jossa kutsutaan SuodattimetPaalle-aliohjelmaa. 'Tämä on koodattu jo aiemmin ja on itse asiassa erittäin tärkeä osa tätä aliohjelmaa. 'Jos taulukkosivulla ei olisi suodattimia päällä, tämä koodi joutuisi suorituksenaikaiseen virheeseen. Jos suodattimet ovat jo käytössä, niihin ei tehdä muutoksia. 'Koodissa on kiinteä silmukka (rivit 4-8), jossa käydään läpi sarakkeet A-E (1-5). 'Tämä tieto oletetaan tässä aliohjelmassa kiinteäksi, todellisessa sovelluksessa asia pitäisi tietenkin tarkistaa. 'Näin ollen A-sarakkeen mukainen suodatusehto on Filters-kokoelman muistipaikassa 1 ja E-sarakkeen vastaavasti muistipaikassa 5. 'Rivillä 5 tarkistetaan, onko käsiteltävän sarakkeen suodatin käytössä (siis onko juuri siitä kyseisestä suodattimesta haettu jokin ehto). 'Tämä saadaan selville suodattimen On-ominaisuudella. 'Jos näin on, kyseisen suodattimen Criteria1-omimaisuuden arvo lisätään MsgStr-merkkijonoon. 'Huomaa siis, että tämä hakee ainoastaan Criteria1-arvon. 'Joskus suodattimille voidaan määritellä kaksi arvoa ja niiden välinen looginen operaattori (katso aliohjelmaa DjaELuokanAsiakkat). 'Jotta saat tämän koodin toimimaan myös yhdistellyille hakuehdoille, joudut liittämään MsgStr-muuttujaan myös Filters-objektin ominaisuudet Criteria2 ja Operator. 'Tämä jääköön tässä yhteydessä kotitehtäväksi. 1 Dim MsgStr As String 2 Dim Lp As Long 3 SuodattimetPaalle 4 For Lp = 1 To 5 5 If Worksheets("AsLista").AutoFilter.Filters(Lp).On Then 6 MsgStr = MsgStr & "Sarakkeen " & Lp & " ehto '" & _ Worksheets("AsLista").AutoFilter.Filters(Lp).Criteria1 & _ "'" & Chr(10) 7 End If 8 Next Lp 9 MsgBox MsgStr End Sub Sub AdvFilter() Range(Range("A7").CurrentRegion.Address).AdvancedFilter _ Action:=xlFilterInPlace, _ CriteriaRange:=Range(Range("A1").CurrentRegion.Address) End Sub