VisualBasic - ohjelmointi - kurssi
Lähetetty:
Visual Basic for Applications (VBA) on Excel-makrojen ohjelmointikieli. Makrot taas ovat erilaisten Excel-suoritteiden automatisointiin tarkoitettuja lyhyitä ohjelmia.
Nimityskäytäntö:
- seuraavassa työkirjan välilehtiä (worksheets) kutsutaan välilehdiksi
- Excel-ikkunan yläosassa olevien valikoiden välilehtiä (tabs) kutsutaan valikoiksi.
Huomautus:
- en ryhdy arvailemaan mitä jotkin englanninkieliset Excel -nimikkeet ovat suomeksi. Käytän suomalaisia nimiä vain jos olen kutakuinkin varma niistä.
Tämä menettely tietysti virheiden ja väärinkäsitysten välttämiseksi..
1. Työskentely-ympäristö
Perusasetukset:
Excel'in Developer valikko (Developer Tab)
- Valitse Excel-Asetuksista Customize Ribbon (Mukauta Valikot?)
Varmista että Developer -valikko on ruksattuna ja klikkaa Ok.
Developer -valikko ilmestyy valikko-ketjuun.
Makrojen turva-asetukset (Macro Security)
- Valitse Developer -valikosta Macro Security
- Kohdan Macro Settings oma asetukseni on Disable all macros with notification.
Suosittelen jompaa kumpaa kahdesta ylimmästä vaihtoehdosta.
Kansio turvallisille makrotiedostoille (Trusted Locations)
- Luo itsellesi sopivaan paikkaan Kurssi -kansio
- Valitse edellisessä ikkunassa Trusted Locations
- Klikkaa sieltä Add new location ja aseta luomasi Kurssi -kansio turvalliseksi.
- Ruksaa myös kohta Subfolders
Näillä asetuksilla Excel hyväksyy mukisematta kaikki Kurssi -kansiossa olevat makro-sovellukset.
Ei-turvallisten kansioiden makro-tiedostoista joko tulee turvallisuusriski-varoitus tai niiden suorittaminen estetään kokonaan, valinnasta riippuen.
===
Harjoitus 1: Makron nauhoitus (Record Macro)
Makron koodi voidaan tuottaa kirjoittamalla se käsin. Näin toimitaan kehittyneempiä, monimutkaisempia makroja luotaessa.
Koodi voidaan aikaansaada myös nauhoittamalla joitain Excel'issä manuaalisesti suoritettuja toimenpiteitä.
Ensimmäisissä harjoituksissa joudutaan paljolti operoimaan asioilla, joita ei vielä ole käsitelty.
Harjoitusten tarkoituksena on lähinnä tutustua ohjelmointi-ympäristöön ja eri työkaluihin.
Varsinaisia ohjelmointitavoitteita ne eivät juurikaan sisällä.
1.
- Avaa Excel
- Tallenna (tyhjä) työkirja omaan Kurssi-kansioosi nimellä 01-Record1.xlsm
Huomaa tallentaessasi valita tiedostoformaatiksi Excel Macro-Enabled Workbook (*.xlsm)
- Anna työkirjan ensimmäisen välilehden nimeksi "EkaSivu"
2.
- Valitse Insert -valikosta Shapes ja sieltä edelleen TextBox
- Piirrä hiirellä sopivaan kohtaan noin reilun kahden solun levyinen teksti-laatikko.
- tee laatikosta kopio (raahaa laatikko Ctrl-nappi pohjassa toiseen paikkaan)
- Kirjoita ylemmän laatikon tekstiksi MUOTOILE SOLUT ja alempaan laatikkoon vastaavasti POISTA MUOTOILUT
3.
Klikkaa ylempää laatikkoa hiiren 2-napilla ja valitse Assign Macro (aseta makro)
- Anna makron nimeksi MuotoileSolut ja klikkaa Record (nauhoita)
- Klikkaa myös Record Macro -ikkunassa Ok. Makron nauhoitus alkaa tällä Ok-klikkauksella.
Tee nauhoituksen aikana vain kaksi alla mainittua asiaa!
- Klikkaa solua A1
- Klikkaa Excel-ikkunan vasemmasta alakulmasta Ready (Valmis)
Makro on nauhoitettu ja voimme siirtyä tarkastelemaan aikaansaannostamme.
4.
- Siirry VB-editoriin klikkaamalla Developer -valikon vasemmasta laidasta Visual Basic tai näppäilemällä Alt - F11.
- Näet editorissa jotain tämän näköistä:
- Jos Projekti-ikkuna ei ole näkyvissä, saat sen auki klikkaamalla kuvaketta 1.
- Properties-ikkunan saa vastaavasti auki 2:lla merkitystä kuvakkeesta.
5.
- Klikkaa vasemmalla olevan Modules -kansion edessä olevaa + -merkkiä avataksesi kansion.
- Löydät kansiosta moduulin Module1, jonka edellä tehty makro-nauhoitus loi.
- Kaksoisklikkaa Module1:stä avataksesi sen koodi-ikkunan.
- Makron nauhoitus loi Sub -proseduurin, jonka nimeksi annettiin MuotoileSolut.
- Sub -proseduuri (~ subroutine ~aliohjelma) alkaa sanalla Sub ja päättyy sanoihin End Sub.
- Varsinainen suoritettava koodi on näiden välissä.
- Hipsulla ( ' ) alkavat rivit ovat kommentteja (älä sekoita näitä solujen kommentteihin Excel'issä). Ne on kuvassa merkitty vihreällä.
- Kommentit eivät vaikuta koodin suoritukseen millään tavalla.
- Sisennys Range -rivillä on tehty helpottamaan lukemista mutta sisennyksilläkään ei itse suoritukseen ole mitään vaikutusta.
- Range -rivin koodi ei tee muuta kuin valitsee solun A1, siitä tulee aktiivi solu.
6.
Poistetaan nämä turhanpäiväisyydet ja korvataan ne koodilla:
Range("A1:Z35").Interior.Color=RGB(176,208,232)
Kun VB-editorissa kirjoituskursori on jollakin koodirivillä, kyseinen makro voidaan suorittaa näppäimellä F5.
Suoritetaan makro tällä kertaa kuitenkin Excel'issä, jotta pääsemme kokeilemaan hienoa käynnistysnappulaamme.
Siirrytään Excel'iin näppäilemällä taas Alt - F11.
===
Muista tallettaa työkirja!
Tehtävä 1-1
Edelläkuvattua mallia noudattaen, nauhoita alemmalle nappulalle koodi, joka poistaa ylemmän nappulan tekemän muotoilun.
Ohje: poista nauhoituksen aikana solualueen muotoilu Excel'issä manuaalisesti.
Tehtävä 1-2 (vaativampi)
Tee edellä kuvattu tehtävä kirjoittamalla koodi itsenäisesti VB-editorissa. Tehtävä voidaan suorittaa usealla vaihtoehtoisella tavalla.
(taisin noudattaa kuva-lupaustani...)
Nimityskäytäntö:
- seuraavassa työkirjan välilehtiä (worksheets) kutsutaan välilehdiksi
- Excel-ikkunan yläosassa olevien valikoiden välilehtiä (tabs) kutsutaan valikoiksi.
Huomautus:
- en ryhdy arvailemaan mitä jotkin englanninkieliset Excel -nimikkeet ovat suomeksi. Käytän suomalaisia nimiä vain jos olen kutakuinkin varma niistä.
Tämä menettely tietysti virheiden ja väärinkäsitysten välttämiseksi..
1. Työskentely-ympäristö
Perusasetukset:
Excel'in Developer valikko (Developer Tab)
- Valitse Excel-Asetuksista Customize Ribbon (Mukauta Valikot?)
Varmista että Developer -valikko on ruksattuna ja klikkaa Ok.
Developer -valikko ilmestyy valikko-ketjuun.
Makrojen turva-asetukset (Macro Security)
- Valitse Developer -valikosta Macro Security
- Kohdan Macro Settings oma asetukseni on Disable all macros with notification.
Suosittelen jompaa kumpaa kahdesta ylimmästä vaihtoehdosta.
Kansio turvallisille makrotiedostoille (Trusted Locations)
- Luo itsellesi sopivaan paikkaan Kurssi -kansio
- Valitse edellisessä ikkunassa Trusted Locations
- Klikkaa sieltä Add new location ja aseta luomasi Kurssi -kansio turvalliseksi.
- Ruksaa myös kohta Subfolders
Näillä asetuksilla Excel hyväksyy mukisematta kaikki Kurssi -kansiossa olevat makro-sovellukset.
Ei-turvallisten kansioiden makro-tiedostoista joko tulee turvallisuusriski-varoitus tai niiden suorittaminen estetään kokonaan, valinnasta riippuen.
===
Harjoitus 1: Makron nauhoitus (Record Macro)
Makron koodi voidaan tuottaa kirjoittamalla se käsin. Näin toimitaan kehittyneempiä, monimutkaisempia makroja luotaessa.
Koodi voidaan aikaansaada myös nauhoittamalla joitain Excel'issä manuaalisesti suoritettuja toimenpiteitä.
Ensimmäisissä harjoituksissa joudutaan paljolti operoimaan asioilla, joita ei vielä ole käsitelty.
Harjoitusten tarkoituksena on lähinnä tutustua ohjelmointi-ympäristöön ja eri työkaluihin.
Varsinaisia ohjelmointitavoitteita ne eivät juurikaan sisällä.
1.
- Avaa Excel
- Tallenna (tyhjä) työkirja omaan Kurssi-kansioosi nimellä 01-Record1.xlsm
Huomaa tallentaessasi valita tiedostoformaatiksi Excel Macro-Enabled Workbook (*.xlsm)
- Anna työkirjan ensimmäisen välilehden nimeksi "EkaSivu"
2.
- Valitse Insert -valikosta Shapes ja sieltä edelleen TextBox
- Piirrä hiirellä sopivaan kohtaan noin reilun kahden solun levyinen teksti-laatikko.
- tee laatikosta kopio (raahaa laatikko Ctrl-nappi pohjassa toiseen paikkaan)
- Kirjoita ylemmän laatikon tekstiksi MUOTOILE SOLUT ja alempaan laatikkoon vastaavasti POISTA MUOTOILUT
3.
Klikkaa ylempää laatikkoa hiiren 2-napilla ja valitse Assign Macro (aseta makro)
- Anna makron nimeksi MuotoileSolut ja klikkaa Record (nauhoita)
- Klikkaa myös Record Macro -ikkunassa Ok. Makron nauhoitus alkaa tällä Ok-klikkauksella.
Tee nauhoituksen aikana vain kaksi alla mainittua asiaa!
- Klikkaa solua A1
- Klikkaa Excel-ikkunan vasemmasta alakulmasta Ready (Valmis)
Makro on nauhoitettu ja voimme siirtyä tarkastelemaan aikaansaannostamme.
4.
- Siirry VB-editoriin klikkaamalla Developer -valikon vasemmasta laidasta Visual Basic tai näppäilemällä Alt - F11.
- Näet editorissa jotain tämän näköistä:
- Jos Projekti-ikkuna ei ole näkyvissä, saat sen auki klikkaamalla kuvaketta 1.
- Properties-ikkunan saa vastaavasti auki 2:lla merkitystä kuvakkeesta.
5.
- Klikkaa vasemmalla olevan Modules -kansion edessä olevaa + -merkkiä avataksesi kansion.
- Löydät kansiosta moduulin Module1, jonka edellä tehty makro-nauhoitus loi.
- Kaksoisklikkaa Module1:stä avataksesi sen koodi-ikkunan.
- Makron nauhoitus loi Sub -proseduurin, jonka nimeksi annettiin MuotoileSolut.
- Sub -proseduuri (~ subroutine ~aliohjelma) alkaa sanalla Sub ja päättyy sanoihin End Sub.
- Varsinainen suoritettava koodi on näiden välissä.
- Hipsulla ( ' ) alkavat rivit ovat kommentteja (älä sekoita näitä solujen kommentteihin Excel'issä). Ne on kuvassa merkitty vihreällä.
- Kommentit eivät vaikuta koodin suoritukseen millään tavalla.
- Sisennys Range -rivillä on tehty helpottamaan lukemista mutta sisennyksilläkään ei itse suoritukseen ole mitään vaikutusta.
- Range -rivin koodi ei tee muuta kuin valitsee solun A1, siitä tulee aktiivi solu.
6.
Poistetaan nämä turhanpäiväisyydet ja korvataan ne koodilla:
Range("A1:Z35").Interior.Color=RGB(176,208,232)
Kun VB-editorissa kirjoituskursori on jollakin koodirivillä, kyseinen makro voidaan suorittaa näppäimellä F5.
Suoritetaan makro tällä kertaa kuitenkin Excel'issä, jotta pääsemme kokeilemaan hienoa käynnistysnappulaamme.
Siirrytään Excel'iin näppäilemällä taas Alt - F11.
===
Muista tallettaa työkirja!
Tehtävä 1-1
Edelläkuvattua mallia noudattaen, nauhoita alemmalle nappulalle koodi, joka poistaa ylemmän nappulan tekemän muotoilun.
Ohje: poista nauhoituksen aikana solualueen muotoilu Excel'issä manuaalisesti.
Tehtävä 1-2 (vaativampi)
Tee edellä kuvattu tehtävä kirjoittamalla koodi itsenäisesti VB-editorissa. Tehtävä voidaan suorittaa usealla vaihtoehtoisella tavalla.
(taisin noudattaa kuva-lupaustani...)