Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

T Tietotekniikan työkurssi

Samankaltaiset esitykset


Esitys aiheesta: "T Tietotekniikan työkurssi"— Esityksen transkriptio:

1 T-106.1061 Tietotekniikan työkurssi
Luento 4 VBA 2

2 Luennon sisältö ohjelmointikielen perustoiminnot
tiedon siirto ohjelman ja ulkomaailman välillä tiedon tallentaminen matemaattiset toiminnot vertailutoiminnot ohjelman suorituksen ohjaaminen ohjelman rakenteen määrittely kielen määrittely hyvän koodin kirjoittaminen VBA sovelluksissa makrojen nauhottaminen

3 Luennon tavoitteet kerrataan edellisellä luennolla opittuja asioita
ohjelmoinnin perustoiminnot käydään loppuun ymmärrät, mitä pitää ottaa huomioon hyvää koodia kirjoitettaessa opit esimerkkien avulla VBA:n käyttöä sovelluksissa: Excel, PowerPoint ja Word tiedät, mihin ja miten makrojen nauhoittamista voi käyttää

4 Muuttujat ohjelmassa tieto tallennetaan muuttujiin, jotka ovat tietokoneen muistista varattuja paikkoja muuttujalla on tyyppi, joka ilmaisee siihen tallennettavan tiedon laadun muuttujan määrittely Dim nimi As String Dim luku As Integer määrittelypakko: Option Explicit staattiset ja dynaamiset muuttujat Private / Public vakiot (Const)

5 Muuttujien perustyypit
Luvut Byte kokonaisluku väliltä Integer kokonaisluku väliltä Long kokonaisluku väliltä Single desimaaliluku väliltä n. -3,4x ,4x1038 Double desimaaliluku väliltä n. -1,7x ,7x10308 String merkkijono Boolean totuusarvo, true tai false Date päivä muuttuja voi olla myös määrittelemätön (Variant)

6 Muuttujien käyttö sijoitusoperaattorina =-merkki
Muuttujan tyyppi: ctrl-i muuttujan arvoa voidaan muuttaa: m=m+2 muuttujan arvo voidaan välittää funktiolle ja saada funktiolta paluuarvona muunnokset eri muuttujatyyppien välillä merkkijonon muuttaminen lukuarvoksi Val-funktiolla funktio palauttaa nollan, jos muunnos epäonnistuu eli merkkijono ei sisällä lukua

7 Muuttujien käyttö Public Sub Swap (X As Long, Y As_ Long) Dim Tmp As Long Tmp = X X = Y Y = Tmp End Sub

8 Esimerkki Val-funktion käytöstä
Dim teksti As String Dim luku As Integer teksti = ”12345” luku = Val(teksti) ’ Luku sisältää nyt arvon 12345 teksti = ”ei luku” luku = Val(teksti) ’ Luku sisältää nyt arvon 0, ’ koska muunnettava ’ merkkijono ei ollut luku

9 Taulukot Taulukon luominen Taulukon alkioon viittaaminen
’Luodaan 10-alkioinen taulukko Dim taulukko(1 To 10) As String ’ Luodaan 64-alkioinen taulukko Dim shakkilauta(1 To 8, 1 To 8) As Integer Taulukon alkioon viittaaminen taulukko(4) = ”Maija” shakkilauta(4,5) = 0

10 Ohjelman rakenne aliohjelma on itsenäinen kokonaisuus, joka jollain lähtöarvoilla suorittaa tietyn tehtävän ja mahdollisesti palauttaa tietyn arvon aliohjelmaa voidaan kutsua eri paikoista paikallinen yleinen aliohjelmilla ohjelmiin saadaan selkeyttä ohjelma saadaan jaettua pienempiin ymmärrettäviin osiin

11 VBA:n rakenteet Function-rakenne Sub-rakenne
voidaan antaa lähtöarvoja eli argumentteja argumentit voivat olla pakollisia tai vapaaehtoisia (Optional) palauttaa aina arvon, paluuarvon voidaan käyttää suoraan Excelissä Sub-rakenne voidaan antaa lähtöarvoja samoin kuin edellä ei palauta arvoa kutsutaan makroksi, jos ei ole lähtöarvoja rakenteen näkyminen: Private ja Public rakenteen käynnistäminen: Visual Basicista, automaattisesti ja sovelluksesta

12 Aliohjelmien käyttö ohjelmaan saadaan rakennetta selkeyttä
mahdollista hahmottaa helpommin samaa ”palikkaa” voidaan käyttää useaan kertaan eri puolilta ohjelmaa aliohjelmien käyttöä ei saa korvata hypyillä

13 Argumenttien käytön periaatteet
Sub Ohjelma Function LainaKustannus lainamäärä1 lainamäärä korko1 korko lainaaika lainaaika kustannus1 LainaKustannus Function AnnaAika lainamäärä1 lainamäärä korko2 korko maxaika AnnaAika lainamäärä1 korko2 Sub Muunna lainamäärä korko lainamäärä korko kustannus1

14 Argumenttien välitys ja paluuarvot
aliohjelmat toimivat itsenäisesti ei globaaleja muuttujia annetaan kaikki aliohjelman tarvitsema tieto argumentteina välitetyn argumentin arvo voi muuttua tai ei ByVal: arvo ei muutu ByRef: arvo muuttuu Optional – pakollinen vai valinnainen tietotyypin ilmoittaminen As

15 ByVal ja By Ref a = 12 Sub Foobar(ByVal a) a =13 End Sub
Muisti Pääohjelma a 12 a = 12 Sub Foobar(ByVal a) a =13 End Sub Sub Foobar(ByRef a) a = 13 Foobar a 13 Pääohjelma a 13 Foobar a

16 Kielen määrittely – syntaksi
jotta tietokone ymmärtää ohjelmakoodia, täytyy olla olemassa jokin sovittu “kielioppi” syntaksi ilmoittaa mm miten käskyt syötetään missä järjestyksessä asiat ovat mitkä sanat ovat varattuja

17 VBA kielen määrittely – syntaksi
Sub Proseduuri() End Sub Function Funktio() Funktio=… End Function sovittu tietyt käskyt (varatut sanat) sovittu tietty järjestys sovittu tietyt operaatiot esimerkiksi Application.Workbook

18 ensimmäisen merkin on oltava kirjain
Säännöt proseduurien, argumenttien, muuttujien ja vakioiden nimeämisestä ensimmäisen merkin on oltava kirjain nimessä ei saa olla välilyöntejä, pisteitä (.), huutomerkkejä (!) tai &, $, # varattuja käskysanoja ei saa käyttää (esim. If, Goto ja True) nimiä, joilla on sama määrittelytaso, ei voi käyttää useita kertoja (esimerkiksi yhdessä proseduurissa kaksi kertaa sama muuttujanimi)

19 ? VBA:n ohjeet F1-näppäimellä ongelmakohdan päällä
kursivoitu korvataan tarvittavalla objektilla tai vastaavalla esim. objekti.Activate lihavoidut ja kursivoidut sanat ovat funktion argumentteja, hakasulkeissa ne ovat valinnaisia esim. MsgBox(prompt[;buttons][;title][;helpfile;context]) aaltosulkeet ja suora viiva ilmaisevat pakollisen valinnan kahden kohdan välillä esim. Option Compare {Binary | Text}

20 Rivin katkaisu _ merkki. Esim: Sub Esim() MsgBox _ ”Hello World” End Sub

21 Mistä funktioita löytää / miten kirjoitan koodia?
View - Object Browser tai F2 Classes Tools – Options Auto Quick Info Helppi Koodia on helppo aloittaa tekemään napin tai formin avulla Muutoin uusia aliohjelmia voi yksinkertaisesti kirjoittaa koodi-ikkunaan tai Insert-valikosta

22 Esimerkkifunktioita Count – alueen solujen laskeminen
Application.WorksheetFunction.Count(alue) IsEmpty – onko solu tyhjä If IsEmpty(ActiveSheet.Range(”A1”).Value) then ... End If CStr – datan muunto merkkijonoksi Esim: postinumeroiden konvergointi tekstiksi MsgBox CStr(Now) MsgBox CStr(Chr(169)) (→© )

23 Tekstijonon käsittely
Mid-funktio MsgBox Mid(”testijono”, 3, 4) ’stij MsgBox Mid(”testijono”, 6) ’jono MsgBox Mid(”testijono”, 10) ’tyhjä Left-funktio – postinumeron erottaminen tekstistä MsgBox Left(”testijono”, 1) ’t MsgBox Left(”testijono”, 5) ’testi Right-funktio MsgBox Right(”testijono”, 4) ’jono

24 Lisää merkkijonofunktioita
Haku jonosta: InStr MsgBox InStr(1,”Esimerkki”,”kk”) ’7 MsgBox InStr(8,”Esimerkki”,”kk”) ’0 Välilyöntien poisto merkkijonosta: LTrim, RTrim, Trim MsgBox Trim(” tes ti ”) Välilyöntien lisääminen merkkijonoon: Space MsgBox Space(12-Len(”testi”)) ’tulostaa 12 merkin pituisen testi-sanan

25 MsgBox valintaikkunana
MsgBoxiin saa ehdollisia valintoja (Kyllä / Ei / Cancel) Lyhyt esimerkki: Private Sub ValintaNappi_Click() Dim Vastaus As Long Vastaus = MsgBox("Oletko aivan varma?",_ vbYesNo, "Vahvista") If Vastaus = vbYes Then ... Else ... End If End Sub

26 Eri komentojen syntakseja
If condition Then [statements] [Else [elsestatements]] End If [Public | Private] [Static] Function name_ [(arglist)] [As type] [name = expression] End Function

27 VBA:n objektit – toiminnot, metodit, menetelmät...
objekteja: Excel, työkirja, solu ominaisuudet ja niiden muuttaminen Worksheets("Taul1").Range("A1").Value = 3,14159 Application.Workbooks("esim.xls").Worksheets("Taul1").Name = "taulukko1" objekteille suoritettavat toiminnot ja niihin liittyvät metodit Worksheets("Taul1").Activate Workbooks.Open("esim.xls") erotetaan pisteellä objektista tai toisesta ominaisuudesta voi palauttaa arvon MsgBox ”Avoinna olevia työkirjoja on ” & _ Application.Worksheets.Count

28 VBA:n objektit – toiminnot, metodit, menetelmät... (2)
lyhytviittaukset objekteja, joiden kohde osoittaa aina aktiiviseen objektiin ActiveSheet ActiveCell Esim. ActiveCell.Value = 5 oikean objektin löytäminen Help-valikko makronauhuri Object Browser-ikkuna

29 Esimerkki: alue argumenttina
Public Function Karvo(alue as Range) As Double Dim b As Range Dim a As Double a=0 For Each b In alue a=a+b.value next b Karvo = a / alue.count End Function

30 Esimerkki: solun arvon muuttaminen
Worksheets(”Taulu”).Range(”A1”).Value = 3 Range(”B1”).Formula = ”=5-10*rand” Range(”C1:E3”).Value = 6

31 Esimerkki: Excelin funktion käyttäminen
Cells(1, 1).Value= WorksheetFunction.Round( , 2)

32 (Esimerkki: Workbookin lisäys)
Sub CreateAndSave() Set newBook = Workbooks.Add Do fName = Application.GetSaveAsFilename Loop Until fName <> False newBook.SaveAs Filename =fname End Sub

33 Esimerkki: objektimuuttujan käyttö
objektimuuttujat asetetaan osoittamaan olemassa oleviin objekteihin Set-käskyllä Public Sub Esim() Dim a,b As Excel.Range Set a = Worksheets(”Taul1”).Range(”A1”) Set b = Worksheets(”Taul1”).Range(”A1”) a.Value = 6 MsgBox b ’ Ikkunassa näytetään arvo 6 b.Value = 3 ’ Muutetaan samalla a:n arvoa MsgBox a ’ Ikkunassa näytetään arvo 3 End Sub

34 Makronauhuri makronauhuri on kätevä apuväline, kun etsit Visual Basic -menetelmiä ja ominaisuuksia, joita haluat käyttää kaikkea et voi nauhoittaa ehdolliset haarakohdat silmukkarakenteet lasketut valinnat ja viittaukset jotkin sisäiset funktiot ja valintaikkunat omat valintaikkunat (älä käytä hiirtä nauhoittaessasi) voit parantaa makroja muokkaamalla moduliin nauhoitettua koodia

35 Makronauhurin käyttö avaa Developer-valikosta Code - Record Macro
tee toiminnot Excelissä kuten muutenkin pysäytä nauhoitus Stop Recording-painikkeella makro on käytössäsi Module-ikkunassa Makron ajaminen: Developer – Macros - < makron nimi>

36 Hyvän koodin kirjoittaminen
ohjelman rakenne on hyvä aliohjelmien käyttö (sub ja function) ohjausrakenteiden käyttö (valinnat ja toistot) argumenttien välitys on oikein ei globaaleja muuttujia paluuarvoja käytetään hyväksi käytetty järkevästi kielen mahdollisuuksia koodi on järjestelty hyvin rivien käyttö sisennys kommentointi ja havainnolliset nimet

37 Kommentit selkokieliset huomautukset ohjelmakoodissa
kommentointi on tärkeää – lisää selkeyttä myöhemmin helpompi ”muistaa” omaa koodia muiden helpompi ymmärtää koodia helpottaa ohjelman ylläpitoa heittomerkin (’) tai (Rem)-sanan jälkeen kielen tulkki ohittaa kommentit kommentteja monimutkaisiin kohtiin – ei liikaa Visual Basic on melko selkeää kieltä, joten se ei vaadi kovin paljon kommentteja

38 Ohjelmoinnin virheiden välttäminen
ohjelmoinnissa tulee aina virheitä syntaksi-virheet kielen määrittelyssä on virhe ohjelma ei pysty kääntämään koodia suorituksen aikaiset virheet loogiset virheet kielen määrittely on oikein ja koodi kääntyy ohjelma ei kuitenkaan toimi halutulla tavalla loogiset virheet on vaikeampia löytää virheenkorjaus, debugging – työkalut

39 VBA koodin optimointi tarpeettomien nauhoitettujen osien poisto
variant-muuttujan käytön minimointi Toistorakenteiden järkevä käyttö OLE-viittausten välttäminen With-lauseella For Each…Next -silmukan käyttäminen muut indeksilukujen selkeä käyttäminen objektin aktivoinnin ja valitsemisen minimointi määriteltyjen objektityyppien käyttö vakioiden käyttäminen

40 Esim. With-lauseen käyttämisestä
Application.Workbooks(”esim.xls”)._ Worksheets.Cells(1,1) .Value = 0 .Font.Name = ”Arial” .Font.ColorIndex = 3 End With EI SIIS NÄIN Application.Workbooks(”esim1.xls”).Worksheets._ Cells(1,1).Value = 0 Cells(1,1).Font.Name = ”Arial”

41 VBA:n käyttö Office-sovelluksissa
objektimallilla viittaaminen Excelin toiminnot ja viittaaminen taulukkosivut kuvaajat solujen arvot PowerPoint Word Visual Basic on tehokas tapa saada lisää ominaisuuksia sovelluksiin

42 Mitä muuta VBA:lla voi tehdä?
Visual Basic for Applications muissa sovelluksissa Word PowerPoint Access muodot ja piirrokset tekstintäyttöobjektit muut hauskat automaatiot

43 VBA:n vinkkejä ESC-näppäin tai CTRL+BREAK pysäyttää loputtoman silmukan voit jatkaa lausetta seuraavalle riville: kirjoita rivin loppuun välilyönti ja alaviiva (_) lauseiden muodostamisen työkalut automaattinen syntaksin tarkistus vaadi muuttujan määrittely (Option Explicit) automaattinen lauseen muodostin automaattinen pikavihje automaattinen arvovihje sisennä automaattisesti sarkainleveys

44 Mihin VBA:ta voidaan käyttää Excelissä?
funktiot Exceliin usein käytettyjen toimintasarjojen toisto muotoilut ulkopuolisen datan tuominen Exceliin sovellusten tekeminen muille käyttäjille personoidut taulukot käyttäjän antamien tietojen syöttö voidaan yhdistää muihin Excelin ominaisuuksiin

45 Mitä tästä kaikesta oli hyötyä?
opittuasi kerran ohjelmoimaan on muiden ohjelmointikielten oppiminen ”helppoa” tiedät jotain siitä, mitä ohjelmointi on peräkkäisiä valintoja ja toistoja tiettyjä rakenteita sovittuja kielen määrittelyjä virheiden korjaamista  ymmärrät ehkä paremmin Office-ohjelmia, jotka on suurelta osin tehty Visual Basicilla ohjelmoimaan oppii vain ohjelmoimalla…

46 Kertaus luennon tärkeimmistä asioista
arvot aliohjelmien välillä välitetään argumentteina kielen syntaksi on tärkeää osata, jotta kieltä pystyy käyttämään Visual Basicia voi käyttää tehostamaan sovellusten toimintaa makronauhuria käytettäessä pitää muuttaa koodia käsin

47 Kysymyksiä


Lataa ppt "T Tietotekniikan työkurssi"

Samankaltaiset esitykset


Iklan oleh Google