Attribute VB_Name = "Module11" 'Toiminto alkaa aliohjelmasta Tulostus. 'Tässä aliohjelmassa kutsutaan heti funktiota KysySarake rivillä 10. 'Funktiossa KysySarake kysytään käyttäjän vastaus käyttämällä InputBox-funktiota. ' 'Vastaus muutetaan isoiksi kirjaimiksi funktiolla UCase ja otetaan talteen muttujaan Vast (rivi 4). 'Isoiksi kirjaimiksi muunto tehdään ainoastaan jotta arvon oikeellisuuden tarkistuksessa ei tarvitse ottaa huomioon isojen ja pienten kirajainten eroja. 'Vastauksen oikeellisuustarkistuksessa (rivi 5) katsotaan, että Vast-muuttujan arvon pituus on yksi ja kirjoitettu sarakekirjain on sarakkeiden D ja M välissä. 'Jos tarkistus ei toteudu, muuttujaan Vast asetetaan arvoksi miinusmerkki. 'Tästä merkistä pääohjelma tunnistaa, että käyttäjä ei ole onnistunut kirjoittamaan tulostettavaa saraketta oikein ja osaa siten olla kutsumatta aliohjelmaa SiirryTulostukseen. 'Käytetty erikoismerkki voisi siis olla mikä tahansa merkki, paitsi saraketta kuvaava kirjain. 'Aliohjelmassa SiirryTulostukseen asetetaan tulostusalue valitun sarakkeen mukaan ja kutsutaan tulostuksen esikatselua. 'Katso tarvittassa lisää ActiveSheet-objektin ominaisuuksista ja metodeista luvusta 8: Sheet: Viittaaminen taulukkosivuun. Private Function SatunnaisLukuValilta( _ ByVal Alaraja As Long, ByVal Ylaraja As Long) As Long Randomize SatunnaisLukuValilta = Int((Ylaraja - Alaraja + 1) * Rnd + Alaraja) End Function Public Sub TestiData() Dim Rivi As Long For Rivi = 5 To 46 Range("D" & Rivi).Value = CLng("1" & SatunnaisLukuValilta(0, 1) & SatunnaisLukuValilta(0, 3) & SatunnaisLukuValilta(0, 9) & SatunnaisLukuValilta(0, 9)) / 1000 Range("E" & Rivi).Value = CLng("0" & SatunnaisLukuValilta(0, 1) & SatunnaisLukuValilta(0, 3) & SatunnaisLukuValilta(0, 9) & SatunnaisLukuValilta(0, 9)) / 1000 Range("F" & Rivi).Value = CLng("3" & SatunnaisLukuValilta(0, 2) & SatunnaisLukuValilta(0, 3) & SatunnaisLukuValilta(0, 9) & SatunnaisLukuValilta(0, 9)) / 10000 Range("G" & Rivi).Value = CLng("8" & SatunnaisLukuValilta(0, 4) & SatunnaisLukuValilta(0, 3) & SatunnaisLukuValilta(0, 9) & SatunnaisLukuValilta(0, 9)) / 100 Range("H" & Rivi).Value = CLng("1" & SatunnaisLukuValilta(0, 1) & SatunnaisLukuValilta(0, 3) & SatunnaisLukuValilta(0, 9) & SatunnaisLukuValilta(0, 9)) / 1000 Range("I" & Rivi).Value = CLng("0" & SatunnaisLukuValilta(0, 1) & SatunnaisLukuValilta(0, 3) & SatunnaisLukuValilta(0, 9) & SatunnaisLukuValilta(0, 9)) / 1000 Range("J" & Rivi).Value = CLng("2" & SatunnaisLukuValilta(0, 1) & SatunnaisLukuValilta(0, 3) & SatunnaisLukuValilta(0, 9) & SatunnaisLukuValilta(0, 9)) / 1000 Range("K" & Rivi).Value = CLng("6" & SatunnaisLukuValilta(0, 1) & SatunnaisLukuValilta(0, 3) & SatunnaisLukuValilta(0, 9) & SatunnaisLukuValilta(0, 9)) / 1000 Range("L" & Rivi).Value = CLng("12" & SatunnaisLukuValilta(0, 4) & SatunnaisLukuValilta(0, 3) & SatunnaisLukuValilta(0, 9) & SatunnaisLukuValilta(0, 9)) / 10000 Range("M" & Rivi).Value = CLng("17" & SatunnaisLukuValilta(0, 3) & SatunnaisLukuValilta(0, 3) & SatunnaisLukuValilta(0, 9) & SatunnaisLukuValilta(0, 9)) / 10000 Next Rivi End Sub Private Sub SiirryTulostukseen(ByVal S As String) ActiveSheet.PageSetup.PrintArea = S & "4:" & S & "46" ActiveSheet.PrintPreview End Sub Private Function KysySarake() As String Dim Vast As String Vast = UCase(InputBox("Tulostettava sarake (D-M):", "Valinta")) If (Len(Vast) > 1) Or (Vast < "D") Or (Vast > "M") Then Vast = "-" End If KysySarake = Vast End Function Public Sub Tulostus() Dim TulSarake As String TulSarake = KysySarake If TulSarake <> "-" Then SiirryTulostukseen (TulSarake) Else MsgBox "Valinta virheellinen" End If End Sub