Attribute VB_Name = "Module11" Public Sub SimpleZoom(ByVal Prosentit As Long) 1 If (Prosentit >= 10) And (Prosentit <= 400) Then 2 ActiveWindow.Zoom = Prosentit 3 End If End Sub Public Sub AsetaZoom(ByVal HalututRivit As Long, _ ByVal HalututSarakkeet As Long) 1 Dim ZoomKokeilu As Long 2 Range("A1").Select 3 ZoomKokeilu = 100 4 SimpleZoom ZoomKokeilu 'Tämän esimerkin mukainen silmukkarakenne halutaan kirjoittaa esiehtoiseksi silmukaksi, joten edellä esitetty ajatus silmukoinnin lopettamisesta pitää kääntää ajatukseksi, miten kauan silmukointia jatketaan. 'Tämä sen vuoksi, että jos heti 100% kokeilukerralla todetaan, että kaikki tarvittava on tehty, zoomausta ei muutettaisi. 'Lopetusehtoiset silmukkarakenteet suorittavat silmukan sisällä olevat komennot aina ainakin kerran. 'Boolen Algebran muuttaminen vaatii sekä kaikkien ehtojen että operaattorien kääntämisen. 'Toisi sanoen, silmukkaa suoritetaan niin kauan kunnes "(Zoom>=10) JA (KaikkiRivit TAI KaikkiSarakkeet)". 'Tässä onkin jo melko valmis silmukkarakenne. 'Vielä pitää miettiä, miten ehdot KaikkiRivit ja KaikkiSarakkeet saadaan sellaiseen muotoon, että niillä voidaan testata näkyvissä olevien rivien ja sarakkaiden määrää. 'Tässä vaiheessa otetaan mallia aiemmin tässä luvussa olevasta jaksosta Ikkunoinnin apuvälineitä. 'Kyseisestä jaksosta selviää, että VisibleRange-objektin ominaisuudella asia on selvitettävissä. 'Esiehtoista silmukkaa suoritetaan niin kauan kunnes ehtona olevasta lausekkeesta tulee lopputulokseksi False. 'Edellisen ehtolauseen tulos on epätosi heti, kun muuttujan ZoomKokeilu arvo menee kymmentä pienemmäksi (False AND "mitätahansa" on aina False). 'Toisaalta vaikka ZoomKokeilu olisi suurempi kuin kymmenen, ehto menee epätodeksi, kun sekä rivien kappalemääräehto että sarakkeiden kappalemääräehto ovat molemmat epätosia (False OR False on aina False). 'Jos mikään muu ei auta, voi ottaa avuksi Boolen Algebran matemaattiset apuneuvot. Tämän voi tehdä vaikka Excel-taulukkona seuraavasti: 5 Do While (ZoomKokeilu >= 10) And _ (ActiveWindow.VisibleRange.Rows.Count <= HalututRivit Or _ ActiveWindow.VisibleRange.Columns.Count <= HalututSarakkeet) 6 ZoomKokeilu = ZoomKokeilu - 1 7 SimpleZoom ZoomKokeilu 8 Loop End Sub Public Sub OmaZoom() 1 AsetaZoom HalututRivit:=50, HalututSarakkeet:=20 End Sub