520 likes | 731 Views
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
E N D
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änohjelmoimia ohjelmia • tietokoneen voima perustuuasioiden toistoon
Muisti ja tallennusyksikkö RAM CD-ROM ROM kiintolevyt nauhat levykkeet Keskusyksikkö – Central Processing Unit CPU kontrolli- yksikkö prosessori- yksikkö Syöttölaitteet Tulostuslaitteet Syöttö ja tulostus Input/Output I/O näppäimistö hiiri näyttö printteri Tietokoneen rakenne
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
Tietokoneen toiminta Tieto-sisällönkäsittely Syöte 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 Sovellus Sovelluksen toiminnot ja laajennukset Työkirja Taulukkosivu Graafinenobjekti Ikkuna Nimetty alue • objekteja voidaan käyttää eri ohjelmissa • yhteisiä objekteja on monia • viitataan isä.poika.pojanpoika Solu Grafiikanobjektit Solunarvo 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
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 Projekti -ikkuna
Ominaisuudet (Properties) • Valitun objektin ominaisuudet • esim. nimi, väri, koko • Aakkostettuna tai kategorioittain • Näkyvillä vain valitun objektinsisä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-muuttujatpuurakenteisena
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.
0010110 00111101 00111101 11101101 Muistitoiminnot • 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 tosieli 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 • 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 • toistaa silmukkaa, kunnes ehdon arvo on True • 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 • 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