Luento 9
Kurssin yhdeksäs luento on kuunneltavissa MP3-muodossa.
Uusimpien selainten mukana pitäisi tulla kuuntelemiseen tarvittavat
ohjelmat. MP3-tiedostojen kuuntelemiseen voi käyttää esimerkiksiä
Winampia
tai Windows Media Playerilla.
Lyhyt kertaus edellisen luennon asioista
- Taulukkolaskentatyökalut
- Makrojen tekeminen
Makrovirukset
Leviäminen
- Sovellusohjelmatiedostoissa olevien makrojen mukana.
- Sähköpostitse.
- Levykkeillä.
Tarttuminen
- Tartuttaa sovellusohjelmatiedostoissa olevia makroja.
- Tarttuu vain samalla sovellusohjelmalla tehtyihin tiedostoihin.
Suojautuminen
- Hanki virusten torjuntaohjelma!
- Huolehdi virusten torjuntaohjelman päivityksestä!
- Tarkista aina saamasi dokumentit ennen avaamista!
- Pyri lähettämään dokumenttisi tavallisena (ASCII-) tekstinä!
- Tarkista tekemäsi dokumentit ennen lähettämistä!
- Poista sähköpostiohjelmista liitetiedostojen automaattinen aukaisu!
- Kytke makrovirusvaroitukset päälle sovellusohjelmista!
Tuhot
- Piloista aina arkaluontoisten dokumenttien lähettämiseen uutisryhmiin.
Erikoispiirre
- Toimii useammassakin ympäristössä.
Poistaminen
- Torjuntaohjelmalla puhdistaminen.
Makrot
Yleistä
Makroja voidaan nauhoittaa...
- absoluuttisesti soluviittausten avulla.
- suhteellisesti sen paikan suhteen, jossa ollaan.
Painikkeen liittäminen makroon
- Nauhoitettuihin makroihin kannattaa liittää painike jo alussa.
- Liittäminen onnistuu Forms (suom. Lomakkeet)-työkalupalkin avulla.
- Työkalupalkista löytyy Button (suom. Painike), johon makron liittäminen on helppoa.
- Valitaan työkalu ja raahataan työpöydällä painikkeen kokoinen alue.
- Raahaamisen jälkeen avautuvasta ikkunasta voidaan valita painikkeeseen liitettävä makro.
Kopioi-makro
Suunnitelma
- Poista lomakkeen suojaus.
- Valitse solut, jotka kopioidaan.
- Kopioi solut leikepöydälle.
- Valitse paikka, johon solut kopioidaan.
- Liitä solut leikepöydältä.
- Suojaa lomake uudelleen.
Toteutus
Sub kopioi()
ActiveSheet.Unprotect
Range("A1:C6").Select
Selection.Copy
Range("G8").Select
ActiveSheet.Paste
ActiveSheet.Protect
End Sub
Lisaa_opiskelija-makro
Suunnitelma
- Poista lomakkeen suojaus.
- Valitse aktiiviseksi yksi solu opiskelijalistasta.
- Käynnistä datalomake (Data | Form).
- Sammuta datalomake.
- Suojaa lomake uudelleen.
Toteutus
Sub lisaa_opiskelija()
ActiveSheet.Unprotect
Range("A1").Select
ActiveSheet.ShowDataForm
ActiveSheet.Protect
End Sub
Jarjesta-makro
Suunnitelma
- Poista lomakkeen suojaus.
- Valitse järjestettävä alue (kaikki sarakkeet).
- Järjestä sarakkeet Nimi-sarakkeen mukaan nousevaan järjestykseen.
- Suojaa lomake uudelleen.
Toteutus
Sub jarjesta()
ActiveSheet.Unprotect
Columns("A:C").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
ActiveSheet.Protect
End Sub
Lisaa_tenttitulos-makro
Esivalmistelut
- Yksi ylimääräinen tyhjärivi opiskelijataulun alkuun.
- Tyhjennetään alue, mutta jätetään kaavat
- Rivi piilotetaan vasta myöhemmin.
Suunnitelma
- Poista lomakkeen suojaus.
- Valitse kolmannen rivin ensimmäinen solu aktiiviseksi.
- Lisää kokonainen rivi
- Valitse alue A2:L2 aktiiviseksi
- Kopio i alue leikepöydälle
- Valitse kolmannen rivin ensimmäinen solu aktiiviseksi.
- Liitä leikepöydän sisältö kolmannelle riville.
- Valitse kolmannen rivin ensimmäinen solu aktiiviseksi.
- Suojaa lomake uudelleen.
Toteutus
Sub lisaa_tenttitulos()
ActiveSheet.Unprotect
Range("A3").Select
Selection.EntireRow.Insert
Range("A2:L2").Select
Selection.Copy
Range("A3").Select
ActiveSheet.Paste
Range("A3").Select
Application.CutCopyMode = False
ActiveSheet.Protect
End Sub
Suodata_tentti-makro
Esivalmistelut
- Erikoissuodatukseen tarvittava alue laitettava kuntoon.
- Alueen ehdot laitettava kuntoon etukäteen.
Suunnitelma
- Poista lomakkeen suojaus.
- Valitse koko tenttitaulu.
- Suodata erikoissuodatuksella näkyviin jokin alue.
- Suojaa lomake uudelleen.
Toteutus
Sub suodata_tentti()
ActiveSheet.Unprotect
Application.Goto Reference:="tentit"
Range("A1:K15").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("M11:M12"), Unique:=False
ActiveSheet.Protect
End Sub
naytakaikki-makro
Suunnitelma
- Poista lomakkeen suojaus.
- Valitse näytä kaikki.
- Valitse toinen rivi aktiiviseksi.
- Piilota toinen rivi.
- Valitse solu A4.
- Suojaa lomake uudelleen.
Toteutus
Sub naytakaikki()
ActiveSheet.Unprotect
ActiveSheet.ShowAllData
Rows("2:2").Select
Selection.EntireRow.Hidden = True
Range("A4").Select
ActiveSheet.Protect
End Sub
Lisaa_harkka-makro
Toiminto toteutetaan InputBox-toiminnon avulla.
Suunnitelma
- Poista lomakkeen suojaus.
- Valitse solu A3.
- Lisää kokonainen rivi.
- Valitse aktiiviseksi alue A2:F2
- Kopioi alue leikepöydälle.
- Valitse solu A3.
- Liitä leikepöydän tiedot soluihin.
- Valitse solu A3.
- Kirjoita soluun ID.
- Valitse solu C3.
- Kirjoita soluun BONUS.
- Valitse solu D3.
- Kirjoita soluun HT1PVM.
- Valitse solu F3.
- Kirjoita soluun HT2PVM.
- Suojaa lomake uudelleen.
- Valitse solu A3.
Toteutus
Sub lisaa_harkka()
ActiveSheet.Unprotect
Range("A3").Select
Selection.EntireRow.Insert
Range("A2:F2").Select
Selection.Copy
Range("A3").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A3").Select
ActiveCell.FormulaR1C1 = InputBox("Anna opis ID")
Range("C3").Select
ActiveCell.FormulaR1C1 = InputBox("Anna Bonus")
Range("D3").Select
ActiveCell.FormulaR1C1 = InputBox("Anna HT1 PVM")
Range("E3").Select
ActiveCell.FormulaR1C1 = InputBox("Anna HT2PVM")
Range("A3").Select
ActiveSheet.Protect
End Sub
Kommunikointi käyttäjän kanssa
- INPUTBOX - Kysytään käyttäjältä tietoa!
- MSGBOX - Tiedotetaan käyttäjälle asioita!
Aloitus- ja lopetustoimenpiteet
- Aloituksessa suoritetaan Auto_open-makro
- Lopetuksessa suoritetaan Auto_close-makro
Omien funktioiden tekeminen
Omien funktioiden tekemisestä löytyy tarkempi kuvaus VBA-oppaasta
Asiakirjamalli
Asiakirjamalliin voidaan tallentaa..
- sivun asetukset.
- koko sovellus.