4.8.2 Makrojen nauhoittaminen

Makrojen nauhoittaminen on yksinkertainen tapa yhdistää erilaisia toimenpidesarjoja. Nauhoitetut makrot täytyy kuitenkin suunnitella hyvin ennen nauhoittamisen aloittamista. Nauhoitetaan esimerkin vuoksi makro, jolla valitaan ensin solualue A1:B4. Valinnan jälkeen alue kopioidaan leikepöydälle, jonka jälkeen alue liitetään leikepöydältä soluihin D1:E4.

mko070

Makron nauhoittaminen aloitetaan valinnalla Työkalut/Makro/Nauhoita makro (Tools/Macro/Record New Macro), jolla avautuvasta ikkunasta voidaan makrolle antaa hieman yleisiä tietoja. Makrolle voidaan antaa nimi (Name), pikanäppäinkomento (Shortcut key) sekä lyhyt kuvaus (Description). Ikkunasta voidaan määritellä myös makron tallentamispaikka (Store macro in). Makro kannattaa yleensä tallentaa sen työkirjan sisään, jossa sitä käytetään. Makroista voidaan myös kerätä eräänlainen makrokirjasto tallentamalla makrot yhteen ja samaan työkirjaan. Kirjaston keräämisestä voi olla hyötyä, koska silloin kerran hyvin suunnittellut makrot ovat käytettävissä aina uudelleen ja uudelleen. Kun tarvittavat tiedot on määritelty makrolle voidaan makron nauhoittaminen aloittaa OK-painikkeella. Makroon nauhoitettavat toimenpiteet voidaan suorittaa hyvinkin hitaasti, koska makrojen nauhoittamisnopeus ei ole niiden ajonopeus. Makrossa tehtävät toimenpiteet suoritetaan huomattavasti nopeammin kuin mitä pystytään tekemään hiiren ja näppäimistön avulla. Kun makron nauhoittaminen on käynnissä avautuu näkyville oheisen kuvan mukainen nauhoituksen lopettamispainike (Stop Recording). Makron nauhoittaminen lopetetaan painamalla nauhoituksen lopetuspainiketta tai valinnalla Työkalut/Makro/Lopeta Nauhoittaminen (Tools/Macro/Stop Recording).

mko071

Nauhoituksen lopettamispainikkeessa on eräs hyvin käyttökelpoinen painike. Suhteelliset viittaukset (Relative Reference) -painikkeella voidaan makrosta tehdä suhteellinen. Makron suhteellisuus tarkoittaa sitä, että makrossa olevat toimenpiteet suoritetaan aloituspaikan suhteen. Absoluuttinen makro suorittaa toimenpiteet aina samoilla soluilla, joten sillä ei voida tehdä kovin monipuolisia tai yleistämiskelpoisia toimenpiteitä. Suhteellinen makro taas tekee toimenpiteet sen solun suhteen, jossa se oltiin makron ajamishetkellä. Muuttamalla suhteellisen solun aloituskohtaa saadaan tehtyä kohtuullisen yleistämiskelpoinen makro, jonka toiminta ei rajoitu pelkästään muutamaan soluun.

Esimerkkimakroon nauhoitettavat toimenpiteet ovat hyvän suunnittelun jälkeen selvillä. Kun makron nauhoitus on päällä, niin sen jälkeen valitaan leikepöydälle kopioitava alue A1:B4. Tämän jälkeen alue kopioidaan leikepöydälle valinnalla Muokkaa/Kopioi(Edit/Copy). Seuraavaksi valitaan solut, jonne leikepöydälle kopioitu alue halutaan liittää eli tässä tapauksessa solun D1 valitseminen riittää. Kun solu on valittu, niin liitetään leikepöydälle kopioitu alue valinnalla Muokkaa/Liitä (Edit/Paste). Tämän jälkeen makron nauhoittaminen voidaan lopettaa.

Seuraavassa kaksi erilaista edellä suunnitelluilla toimenpiteillä nauhoitettua makroa Microsoft Excelissä . Ensimmäinen makroista on tehty absoluuttisilla viittauksilla ja toinen on tehty suhteellisilla viittauksilla. Ensimmäinen makro toimii aina samojen solujen kanssa, mutta toinen makro toimii riippuen makron suorittamispaikasta.

Sub valitse_ja_kopioi_alue()
'
' valitse_ja_kopioi_alue Macro
' Macro recorded 7.1.2000 by Petri Heinonen
'
    Range("A1:B4").Select
    Selection.Copy
    Range("D1").Select
    ActiveSheet.Paste
End Sub
Sub valitse_ja_kopioi_alue()
'
' valitse_ja_kopioi_alue Macro
' Macro recorded 7.1.2000 by Petri Heinonen
'
    ActiveCell.Range("A1:B4").Select
    Selection.Copy
    ActiveCell.Offset(0, 3).Range("A1").Select
    ActiveSheet.Paste
End Sub