Attribute VB_Name = "Module1" Private Sub LisaaKentat() ActiveSheet.Range("A4").Value = "Toimipaikka" ActiveSheet.Range("B4").Value = "Nimi" ActiveSheet.Range("C4").Value = "Yhteyshenkilö" 'Kaikki muut kentät ja määrittelyt End Sub Private Function MuutaNimi() As Boolean 'Rivillä 4 kutsutaan InputBox-funktiota, ' jossa pyydetään käyttäjää kirjoittamaan sivun nimeämisessä käytetty koodi. 'Vastaus otetaan talteen AsNo-muuttujaan. 'Katso tarvittaessa InputBox-funktion toiminnasta lisää luvun 4 jaksosta Käyttöliittymäfunktiot. 'Rivillä 5 tarkistetaan, onko käyttäjän tarjoama koodi oikeaa muotoa. 'Ehtolause vaatii, että koodin pituus on kaksi merkkiä ja että se on numeerinen. 'Jos ehto toteutuu, seuraavaksi yritetään nimetä taulukkosivu annetun asiakaskoodin mukaisesti (rivi 7). 'Virheensieppaus on asetettu päälle (rivi 6), ' jotta koodi ei joudu suorituksenaikaiseen virheeseen taulukon nimeämisen aikana. 'Näinhän käy, jos kyseinen taulukkosivu on jo olemassa. 'Jos rivillä 7 tapahtuu virhe, rivillä 8 Err-objektin Number-ominaisuus on kyseisen virheen numero. 'Jos siis arvo on nollaa suurempi, virhe on tapahtunut. 'Lue tarvittaessa lisää virheensieppauksesta luvun 3 jaksosta Virheensieppaus. Dim AsNo As String Dim KaikkiOK As Boolean KaikkiOK = True AsNo = InputBox("Asiakkaan kaksinumeroinen koodi:") If Len(AsNo) = 2 And IsNumeric(AsNo) Then On Error Resume Next ActiveSheet.Name = "Data" & AsNo If Err.Number > 0 Then KaikkiOK = False End If On Error GoTo 0 Else KaikkiOK = False End If MuutaNimi = KaikkiOK End Function Private Sub PoistaSivu() Application.DisplayAlerts = False Worksheets(ActiveSheet.Name).Delete Application.DisplayAlerts = True End Sub Public Sub LisaaAsiakasSivu() 'Rivillä 1 kutsutaan aliohjelmaa, ' joka lisää aktiiviselle taulukkosivulle otsikot ja rivillä 2 kutsutaan funktiota, ' joka nimeää uuden taulukkosivun. 'Funktion MuutaNimi vastauksen mukaan voidaan joutua poistamaan juuri luotu taulukkosivu (rivi 6), ' jos esimerkiksi nimeäminen ei onnistunut. LisaaKentat If MuutaNimi Then MsgBox "Uusi sivu alustettu" Else MsgBox "Sivun luonnissa virhe" PoistaSivu End If End Sub 'TESTAUKSESTA: 'Kokeile löytää sellaisia vastauksia asiakaskohtaiseksi koodiksi, ' että koodi ei toimikaan oikein (MuutaNimi-aliohjelman rivin 4 InputBox). 'Esimerkiksi ”,4” näyttää menevän tästä koodista hyväksytysti läpi. 'Koodi on kahden merkin mittainen ja tulkittavissa numeroksi 0,4. 'Löytyykö muita vastaavia aukkoja? Mieti, miten nämäkin voisi estää. 'Olisiko esimerkiksi mahdollista tarkistaa merkkijonon suuruus suhteessa merkkijonoihin ”00” ja ”99”, ' tai tarkistaa merkkijonon ensimmäinen ja toinen merkki erikseen. 'Entä sellainen apufunktio, joka putsaisi merkkijonosta kaiken muun paitsi numerot? 'Tähän viimeiseen ajatukseen voit ottaa mallia vaikkapa luvun 3 jaksosta Silmukkarakenteet. 'Saatat myös tarvita neuvoja luvun 4 jaksosta Merkkijonofunktiot. 'Mieti, miten voisit kirjoittaa MuutaNimi-funktion ilman virheensieppausta. 'Lähde liikkeelle siitä ajatuksesta, että koska aliohjelman rivillä 5 on jo tehty tietyt tarkistukset nimeen, ' nimessä ei esimerkiksi ole sellaisia merkkejä, ' joita taulukkosivun nimessä ei saa esiintyä. 'Olisiko siis mahdollista luoda funktio, ' joka tarkistaisi kaikki työkirjassa olevat taulukot ja vertaisi niiden nimiä ehdotettuun nimeen. 'Ota mallia esimerkiksi luvun 8 jaksosta Taulukkosivujen nimet ja numerot.