Attribute VB_Name = "Module1" Public Sub Muotoilut_Vaihe1() 1 Dim Solu As Range 2 For Each Solu In Selection 'Solun sisällön tarkistaminen ja muotoilu 3 Next Solu End Sub Public Sub Muotoilut_Vaihe2() 'Ehtolauseessa tarkistetaan ensin, onko solussa oleva arvo kelvollinen päivämääräksi (rivi 2). 'Jos näin ei ole, seuraavaksi tarkistetetaan, onko arvo kelvollinen numeroksi (rivi 3). 'Ja vasta jos tämäkään ei toteudu, oletetaan, että solussa oleva arvo on tekstiä. 'Tällöin tarkistetaan onko solussa ylipäätään jokin arvo (rivi 5). 'Tämä järjestys on ehdottoman tärkeä. 'Jos ensin tarkistettaisiin solun tyhjyys, kaikki ei-tyhjät solut saisivat kursivointimuotoilut. 'Tässä vaiheessa on hyvä tarkistaa ehtolauseen toimivuus. 'Tämän voisi tehdä usealla tavalla, ehkä tässä tilanteessa näppärin tapa on asettaa koodiin keskeytyskohta ja askeltaa koodi alusta loppuun. 'Jos keskeytyskohdan asettaa silmukan aloitusriville, koodia pääsee askeltamaan heti ensimmäisen solun käsittelystä alkaen. 1 Dim Solu As Range 2 For Each Solu In Selection 3 If IsDate(Solu.Value) Then 'lihavointi 4 ElseIf IsNumeric(Solu.Value) Then 'taustaväri 5 ElseIf Not IsEmpty(Solu) Then 'kursivointi 6 End If 7 Next Solu End Sub Public Sub Muotoilut() Dim Solu As Range For Each Solu In Selection If IsDate(Solu.Value) Then Solu.Font.Bold = True ElseIf IsNumeric(Solu.Value) Then If Len(Solu.Value) > 0 Then Solu.Interior.ColorIndex = 36 Solu.Interior.Pattern = xlSolid End If ElseIf Not IsEmpty(Solu) Then Solu.Font.Italic = True End If Next Solu End Sub Public Sub UndoMuotoilut() 'Tämä kannattaa kirjoittaa täsmälleen näin. 'Jos koodissa olisi kirjoitettu tyhjennys komennolla Selection.ClearFormats, poistettaisiin valitulta alueelta kaikki muotoilut. 'Tällöin poistettaisiin myös käyttäjän mahdollisesti määrittelemät solukehykset, ' fontti- ja lukumuotoilut sekä esimerkiksi päivämääristä päivämäärämuotoilu. 'Tällöin soluun jäisi vain lukuarvo, esim 39083. 1 Selection.Font.Bold = False 2 Selection.Font.Italic = False 3 Selection.Interior.ColorIndex = 0 4 Selection.Interior.Pattern = xlNone End Sub