T-106.1061 Tietotekniikan työkurssi Luento 3 VBA 1
Luennon sisältö tieto ja tietokone ohjelmalla ohjataan tietokonetta ohjelmointikielen perustoiminnot tiedon siirto ohjelman ja ulkomaailman välillä tiedon tallentaminen matemaattiset toiminnot vertailutoiminnot ohjelman suorituksen ohjaaminen ohjelman rakenteen määrittely kielen määrittely Visual Basic for Applications ja sen perustoiminnot
Luennon tavoitteet tiedon merkitys ja tietokoneen toiminta tulee kerrattua ymmärrät, mitä ohjelmointi on ja mitä sen avulla pystytään tekemään ymmärrät VBA:n toimintaperiaatteen opit ohjelmoinnin perustoiminnot VBA:ssa opit tekemään yksinkertaisia VBA ohjelmia
Ihminen ja tietosisältö Ihmisen tuottama tietosisältö: Nonverbaalinen äänet signaalit toiminta kosketukset Verbaalinen puhe kirjoitus Ihmisen tulkitsema tietosisältö: valo ääni haju maku tunto tasapaino sisäistoiminnot Tietosisällön varastointi: fyysisesti havaittava sähköisesti tallennettu optisesti tallennettu muut tavat
Tietokone tietokone on laite, joka käsittelee tietosisältöä muuttaa syötteen halutuksi tulosteeksi varastoi tietosisältöä tietosisältö on tietokoneessa digitaalisessa binäärimuodossa tietokoneen toiminta perustuu muistipaikkojen käyttöön tietokone suorittaa käyttäjän ohjelmoimia ohjelmia tietokoneen voima perustuu asioiden toistoon
Muisti ja tallennusyksikkö Keskusyksikkö – Central Processing Unit CPU Tietokoneen rakenne Muisti ja tallennusyksikkö RAM ROM kiintolevyt nauhat CD-ROM levykkeet Keskusyksikkö – Central Processing Unit CPU kontrolli- yksikkö prosessori- Syöttö ja tulostus Input/Output I/O Syöttölaitteet näppäimistö hiiri Tulostuslaitteet näyttö printteri
Ohjelma on tulkki tietokoneen ja ihmisen välillä Ohjelmointi konekieli symbolinen konekieli korkean tason ohjelmointikieli C, C++ ja C# Java Delphi VBA sovellukset Word Excel PowerPoint Access
Tieto- sisällön käsittely Tietokoneen toiminta Syöte Tieto- sisällön käsittely Tuloste Tallennus
Ohjelmoinnin hyödyt usein toistuvien toimintojen automatisointi toisille tehtävien sovellusten tekeminen saadaan tehtyä räätälöityjä sovelluksia yksinkertaisesti saadaan tietokone toimimaan käyttöjärjestelmä kaikki sovellukset tietoliikenne
VBA -ohjelmointikieli kehitetty Windowsiin – erityisesti Officeen yhdenmukainen kehitysympäristö ja yhtenäinen lausekieli kaikissa sovelluksissa käyttää hyväksi Office-ohjelmien toimintoja helppokäyttöinen sisältää automaattisia toimintoja makrojen nauhoittaminen mahdollista kattavat help-toiminnot
VBA:n rakenne objekteja voidaan käyttää eri ohjelmissa Sovellus Sovelluksen toiminnot ja laajennukset Työkirja Taulukkosivu Graafinen objekti Ikkuna Nimetty alue objekteja voidaan käyttää eri ohjelmissa yhteisiä objekteja on monia viitataan isä.poika.pojanpoika Solu Grafiikan objektit Solun arvo Solumuotoilu
VBA -editori Office 97:ssa, 2000:ssa, 2003:ssa ja 2007:ssä yhtenäinen editori käynnistetään Developer > Code > Visual Basic ALT+F11 editorissa useita ikkunoita (View-valikko) projekti-ikkuna (moduulit) koodi-ikkuna (ohjelmakoodi) ominaisuus-ikkuna työkalurivi
VBA Officen sovelluksissa Visual Basic for Applications, VBA ohjelmakoodi tallentuu moduuleihin, jotka näkyvät projekti-ikkunassa esim. jokaista Excelin työkirjan sivua kohti on oma moduulinsa yleisemmät funktiot ja makrot kirjoitetaan erillisiin moduuleihin voidaan tehdä funktioita suoraan Excelin käyttöön makroja toimintasarjoja varten mahdollistaa monien monimutkaistenkin sovellusten tekemisen
VBA –editori Yleisnäkymä
Projekti -ikkuna Word/Excel yms. objektit UserFormit Moduulit Uuden moduulin luominen hiiren oikealla näppäimellä (Insert > Module) Koko projektikokonaisuus Saman aiheen proseduurit ja funktiot omissa moduleissa
Ominaisuudet (Properties) Valitun objektin ominaisuudet esim. nimi, väri, koko Aakkostettuna tai kategorioittain Näkyvillä vain valitun objektin sisältämät ominaisuudet
Ohjelmakoodi (Code) Valitun moduulin koodi Ensimmäisenä globaalit muuttujat Aliohjelmat ja funktiot peräjälkeen Väliviiva välissä Värikoodit: Varatut sanat - sininen Koodi - musta Virhe - punainen Kommentti - vihreä
Paikalliset muuttujat (Locals) Kaikki paikalliset (eli suoritettavassa ohjelmassa esitellyt) muuttujat ja niiden arvot Kätevä debuggauksessa Taulukko-muuttujat puurakenteisena
Watches Voi asettaa “vahteja” Muuttujien tai monimutkaisten lausekkeiden arvojen tarkkailu Ohjelman pysäyttäminen tosi-ehtoon tai arvon muuttumiseen Kätevä debuggauksessa
Suorita heti (Immediate) Välitön käskyn suorittaminen Funktioiden testaus Muuttujien arvot ? = Tulostaa muuttujan tai lausekkeen arvon
Objektiselain (Object Browser) Kaikki objektit Propertyt Metodit Eventit
Developer -valikko Makrojen nauhoitus Eri objektien 'piirtäminen’ Suunnittelutila (Design Mode)
VBA -ohjelman käynnistäminen forms-toiminnot painikkeet valikot käynnistäminen sovelluksesta funktion kutsu suoraan Excelin solusta automaattinen käynnistys käynnistämällä VBA -editorista VBA –koodista / aliohjelmasta makrolistasta VBA –editorista työkaluriviltä omasta valikosta
Automaattinen käynnistys liittyvät tiettyihin VBA:n objekteihin ennalta määriteltyjen tapahtumien pohjalta Excelissä voit käynnistää Worksheets: Open, BeforePrint, BeforeSave ja BeforeClose Sheets: Calculate ja SelectionChange valintaikkunat: Click, Initialize ja Terminate ActiveX-ohjausobjektit: Click, GotFocus ja LostFocus makrovirusten apuväline
Yksinkertainen VBA -ohjelma Sub Main() Dim temp As Double temp = InputBox("Fahrenheit-lämpötila?") MsgBox Celsius(temp) & " astetta Celsiusta" End Sub Function Celsius(fDegrees As Double) As Double Celsius = (fDegrees - 32) * 5 / 9 End Function Ohjelma kysyy ikkunassa lämpötilaa fahrenheit-yksiköissä ja kutsuu Celsius-funktiota, joka muuttaa arvon celsius-asteiksi. Lopuksi ohjelma tulostaa ikkunassa tämän celsiukseksi muutetun lämpötilan.
Aliohjelmat ja funktiot kaikki ohjelmakoodi kirjoitetaan komentosarjoihin, jotka ovat joko aliohjelmia (Sub) tai funktioita (Function) komentosarjat kokonaisien ohjelmien loogisia rakennuspalikoita yksi aliohjelma tai funktio suorittaa yhden, mahdollisimman yksinkertaisen tehtävän komentosarjat koostuvat peräkkäisistä käskyistä eli lauseista
Ohjelmointikielen perustoiminnot tiedon siirto ohjelman ja ulkomaailman välillä syöttö ja tulostus näytölle ja kirjoittimelle tiedostojen ja objektien käsittely tiedon tallentaminen ohjelman suorituksessa matemaattiset toiminnot vertailutoiminnot ohjelman suorituksen ohjaaminen valinnaiset toiminnot: if-lause toisto: for- ja while-silmukat ohjelman rakenteen määrittely kielen määrittely – syntaksi ja semantiikka
Syöttö ja tulostus syöttö ja tulostus tarkoittaa kommunikointia käyttäjän ja ohjelman välillä muiden laitteiden ja ohjelmien kanssa syötteellä käyttäjä vaikuttaa ohjelman kulkuun syöte voidaan antaa esimerkiksi näppäimistöltä tai tiedostosta ohjelma antaa tulosteen esimerkiksi näyttöruudulle, tiedostoon tai kirjoittimelle
Tietojen syöttö ohjelman aikana ohjelman ikkunat MsgBox ja InputBox Forms-ikkunat sovellukset Excelin solu valikoista valitut arvot staattiset: samat ohjelman suorituksen ajan dynaamiset: muuttuvat suorituksen mukaan vaikuttamistavat: VBA -koodin käynnistäminen tai tilan ilmaiseminen
Käyttöliittymä – User Interface käyttöliittymän avulla käyttäjä kommunikoi tietokoneen kanssa VBA tarjoaa lukuisia ”visuaalisia” käyttöliittymän tekotapoja ikkunat valikot käyttöliittymä pitää rakentaa siten, ettei ohjelma pysty ”kaatumaan” käyttäjän toimesta käyttöliittymän tulee olla selkeä ja tarkoituksenmukainen
Esimerkki: InputBox- ja MsgBox-funktiot Sub NoudaNimi() Dim omaMuutt As String omaMuutt = InputBox("Anna nimesi:") MsgBox omaMuutt, 0, "Nimesi:" End Sub InputBox:n palauttamaa arvoa (käyttäjän nimi) käytetään proseduurissa, joten sen argumentti on sulkeissa, toisin kuin MsgBox-funktiolla.
Yksinkertainen VBA -ohjelma Sub Main() Dim temp As Double temp = InputBox("Fahrenheit lämpötila?") MsgBox Celsius(temp) & " astetta Celsiusta" End Sub Function Celsius(fDegrees As Double) As Double Celsius = (fDegrees - 32) * 5 / 9 End Function Ohjelma tulostaa kysymyksen ja vastauksen. Valintaikkunassa annetaan syöte.
Muistitoiminnot 0010110 00111101 11101101 ohjelmassa tieto säilytetään muuttujissa ja muistirakenteissa oikeasti ne ovat tiedon osoitteita tietokoneen muistissa staattiset ja dynaamiset muuttujat toiset ohjelmointikielet tarkkoja muuttujien määritysten suhteen muistitoimintojen tyyppejä muuttuja taulukko tietue (esim. viittaus tietokantaan)
Mikä on muuttuja? muuttuja on nimetty pala muistia muuttujalle voidaan tallentaa ohjelman suorituksen aikana tietoa lukuja tekstiä muuta määriteltyä tietoa muuttujan arvoa voidaan muuttaa: m=m+2 muuttujan arvo voidaan välittää funktiolle ja saada funktiolta paluuarvona suuri osa ohjelman toiminnasta perustuu muuttujille tallennettuun tietoon
Muistitoiminnot VBA:ssa vakio, muuttuja ja taulukko määritellyt tietotyypit luvut: Byte, Integer, Long, Single, Double ja Currency teksti: String totuusarvo: Boolean päivä ja aika: Date objekti: Object muuttuja voi olla myös määrittelemätön (Variant) parempi käyttää määriteltyä (Dim omaMuutt As String) määrittelypakko: koodin alkuun Option Explicit sijoitusoperaattorina =-merkki
Yksinkertainen VBA -ohjelma Sub Main() Dim temp As Double temp = InputBox(”Fahrenheit lämpötila?”) MsgBox(Celsius(temp) & " astetta Celsiusta“) End Sub Function Celsius(fDegrees As Double) As Double Celsius = (fDegrees - 32) * 5 / 9 End Function =-merkillä sijoitetaan temp-muuttujaan eri arvoja.
Matemaattiset toiminnot ja VBA kaikissa korkean tason ohjelmistokielissä on matemaattiset perustoiminnot peruslaskutoimitukset +, -, / ja * kaikki Excelin funktiot ovat käytössä + -
Yksinkertainen VBA -ohjelma Sub Main() Dim temp As Double temp = InputBox(”Fahrenheit lämpötila?”) MsgBox(Celsius(temp) & " astetta Celsiusta") End Sub Function Celsius(fDegrees) Celsius = (fDegrees - 32) * 5 / 9 End Function Esimerkissä käytetään peruslaskutoimituksia.
Vertailutoiminnot ja VBA vertailuoperaattorit < ja <= (”pienempi kuin” ja ”pienempi tai yhtä suuri kuin”) > ja >= (”suurempi kuin” ja ”suurempi tai yhtä suuri kuin”) = ja <> (”yhtä suuri kuin” ja ”erisuuri kuin” ehtojen yhdistely: and,or ja not ohjelmassa voidaan verrataan yleensä vakioita ja funktioiden paluuarvoja sulkeiden avulla voidaan määrätä järjestys vertailuoperaattori palauttaa arvona toden tai epätoden
Esimerkkejä: x > 10 x=5 a = true x<>5 x <10 or x >= 1 x=5 and y=3 (a=5 and b=3) or (a=6 and b=2) (a=5 and (b=3 or a=6) and b=2)
Ohjelman suorituksen ohjaaminen ohjelmassa on lauseita lauseet suoritetaan peräjälkeen vasemmalta oikealle ylhäältä alas lauseen sisällä voi olla hyppyjä johonkin toiseen osaan ohjelmassa suoritusjärjestystä voivat ohjata kontrollirakenteet valinnaiset toiminnot toisto ohjelmointi ilman rakenteita hyvin työlästä
Valinnaiset toiminnot ? ohjelman haarautumiskohta testataan, onko jokin ehto tosi eli verrataan eri vaihtoehtoja valinta eri suoritusten välillä riippuen vertailusta voi vaatia useamman tai vain tietyn vertailun yhdistelemällä saadaan lisää vaihtoehtoja esimerkki: jos punainen ja pyöreä, niin omena
Ehtolause VBA:ssa Testataan onko jokin ehto tosi If…Then If…Then…Else yksi ehto yhden tai useamman lauseen suorittaminen (päätetään End If) If…Then…Else If…Then…Elseif… Select Case useita eri vaihtoehtoja suoritetaan ehdon perusteella
Esimerkki: If…Then…Else -rakenne Sub VertaaSolu() Dim Luku As Integer Luku = Worksheets("Taul1").Range("A1").Value If Luku < 10 Then Arvo = ”Alle 10” Else Arvo = ”10 tai yli” End If Worksheets("Taul1").Range("A2").Value = Arvo End Sub Jos If-rakenne ei mahdu yhdelle riville, se pitää päättää End If-lauseeseen.
Toistot eli silmukat tietyt lauseet toistetaan useita kertoja määräsilmukat pyörivät tietyn määrän kertoja perustuvat laskurimuuttujaan for-silmukka ehdolliset silmukat päättyvät kun tietty ehto on täynnä while-silmukka esimerkki nostetaan laatikosta hedelmiä koriin, kunnes se on tyhjä
Silmukat VBA:ssa Do While/Until...Loop ja While...Wend suorittaa testauksen silmukan alussa toistaa silmukkaa, kunnes ehdon arvo on True Do Loop…While/Until suorittaa testauksen silmukan lopussa tekee silmukan vähintään kerran For...Next suorittaa lauseet tietyn määrän kertoja laskuri For Each...Next toistaa kaikille alkioille, esimerkiksi objekteille
Esimerkki: For...Next -silmukka Sub Äänimerkit() For x = 1 To 50 Beep ’huomautus esimerkki Next x End Sub Beep-lause saa aikaan tietokoneen kaiuttimesta äänimerkin, jonka taajuus ja kesto ovat konekohtaisia.
Esimerkki toistosta: while silmukka Dim Counter As Integer Counter = 0 ’ Aloitusarvo While Counter < 20 ’ Vertailu Counter = Counter + 1 ’ Laskurin kasvatus Wend ’ Silmukan lopetus ’ kun Counter > 19
Esimerkki toistosta: do...loop silmukka Dim Check As Boolean Dim Counter As Integer Check = True Counter = 0 ’ Aloitusarvot Do ’ Ulompi silmukka Do While Counter < 20 ’ Sisempi silmukka Counter = Counter + 1 ’ Laskurin kasvatus If Counter = 10 Then ’ Jos ehto tosi Check = False ’ Asetetaan Check muuttuja Exit Do ’ Poistu sisemmästä ’ silmukasta End If Loop Loop Until Check = False ’ Poistu ulommasta ’ silmukasta
Yhdistetty rakenne ? testataan, mitä on toimitaan eri tavoin punainen ja pyöreä omena oranssi ja pitkulainen porkkana toimitaan eri tavoin omenat koriin porkkanat pussiin muut roskiin testataan, onko vielä jos on niin seuraava muutoin lopetetaan
Kertaus luennon tärkeimmistä asioista ohjelman avulla tietokone saadaan tekemään haluttuja asioita VBA:lla pystytään tekemään omaa toimintaa helpottavia ominaisuuksia sekä sovelluksia toisille muuttujiin voidaan tallentaa tietoa rakenteet ovat tärkeä osa ohjelmointia valinnat: if-lause toistot: while- ja for-silmukat
Kysymyksiä