Kehittynyt VBA-opas MS Excelille

Jos olet vasta aloittamassa VBA :n käyttöä, sinun kannattaa aloittaa VBA-oppaamme aloittelijoille(VBA guide for beginners) opiskelu . Mutta jos olet kokenut VBA -asiantuntija ja etsit edistyneempiä asioita, joita voit tehdä VBA : lla Excelissä(Excel) , jatka lukemista.

Mahdollisuus käyttää VBA - koodausta Excelissä(Excel) avaa koko automaation maailman. Voit automatisoida laskelmat Excelissä(Excel) , painikkeita ja jopa lähettää sähköpostia. VBA :lla on enemmän mahdollisuuksia automatisoida päivittäistä työtäsi kuin uskotkaan.

Advanced VBA Guide for Microsoft Excel

VBA -koodin kirjoittamisen päätavoite Excelissä(Excel) on, että voit poimia tietoja laskentataulukosta, suorittaa sille erilaisia ​​laskelmia ja kirjoittaa sitten tulokset takaisin laskentataulukkoon.

Seuraavat ovat yleisimmät VBA : n käyttötavat Excelissä(Excel) .

  • Tuo(Import) tiedot ja suorita laskelmia
  • Laske(Calculate) tulokset, kun käyttäjä painaa painiketta
  • Lähetä(Email) laskutoimitukset jollekin sähköpostitse

Näiden kolmen esimerkin avulla sinun pitäisi pystyä kirjoittamaan erilaista omaa kehittynyttä Excel VBA -koodiasi(Excel VBA) .

Tietojen tuonti ja laskelmien suorittaminen(Importing Data and Performing Calculations)

Yksi yleisimmistä Excelin(Excel) käyttämistä asioista on laskelmien tekeminen Excelin(Excel) ulkopuolella oleville tiedoille . Jos et käytä VBA :ta, sinun on tuotava tiedot manuaalisesti, suoritettava laskelmat ja tulostettava arvot toiseen taulukkoon tai raporttiin.

VBA :n avulla voit automatisoida koko prosessin. Jos esimerkiksi sinulla on uusi CSV -tiedosto ladattu tietokoneesi hakemistoon joka maanantai(Monday) , voit määrittää VBA -koodisi toimimaan, kun avaat laskentataulukon ensimmäisen kerran tiistaiaamuna(Tuesday) .

Seuraava tuontikoodi suoritetaan ja tuo CSV - tiedoston Excel - laskentataulukkoon.

Dim ws As Worksheet, strFile As String

Set ws = ActiveWorkbook.Sheets("Sheet1")
Cells.ClearContents

strFile = “c:\temp\purchases.csv”

With ws.QueryTables.Add(Connection:="TEXT;" & strFile, Destination:=ws.Range("A1"))
     .TextFileParseType = xlDelimited
     .TextFileCommaDelimiter = True
     .Refresh
End With

Avaa Excel VBA -muokkaustyökalu ja valitse Sheet1 - objekti. Valitse objektin ja menetelmän pudotusvalikosta Työtaulukko(Worksheet) ja Aktivoi(Activate) . Tämä suorittaa koodin aina, kun avaat laskentataulukon.

Tämä luo Sub Worksheet_Activate() -funktion. Liitä yllä oleva koodi kyseiseen funktioon.

Tämä asettaa aktiivisen laskentataulukon arvoksi Sheet1 , tyhjentää taulukon, muodostaa yhteyden tiedostoon käyttämällä tiedostopolkua, jonka määritit strFile-(strFile) muuttujalla, ja sitten With - silmukka kiertää tiedoston jokaisen rivin läpi ja sijoittaa tiedot taulukkoon solusta A1 alkaen. .

Jos suoritat tämän koodin, näet, että CSV - tiedoston tiedot on tuotu tyhjään laskentataulukkoon Taulukko1(Sheet1) .

Tuonti on vasta ensimmäinen askel. Seuraavaksi haluat luoda uuden otsikon sarakkeelle, joka sisältää laskentatulokset. Oletetaan tässä esimerkissä, että haluat laskea kunkin tuotteen myynnistä maksetut 5 % verot.

Toimintojen järjestys koodin tulisi suorittaa:

  1. Luo uusi tulossarake nimeltä verot(taxes) .
  2. Selaa myydyt yksiköt(units sold) -saraketta ja laske myyntivero.
  3. Kirjoita laskennan tulokset arkin oikealle riville.

Seuraava koodi suorittaa kaikki nämä vaiheet.

Dim LastRow As Long
Dim StartCell As Range
Dim rowCounter As Integer
Dim rng As Range, cell As Range
Dim fltTax As Double

Set StartCell = Range("A1")

'Find Last Row and Column
LastRow = ws.Cells(ws.Rows.Count, StartCell.Column).End(xlUp).Row
Set rng = ws.Range(ws.Cells(2, 4), ws.Cells(LastRow, 4))

rowCounter = 2
Cells(1, 5) = "taxes"

For Each cell In rng
fltTax = cell.Value * 0.05
Cells(rowCounter, 5) = fltTax
rowCounter = rowCounter + 1
Next cell

Tämä koodi löytää tietoarkin viimeisen rivin ja määrittää sitten solualueen (myyntihinnat sisältävä sarake) ensimmäisen ja viimeisen tietorivin mukaan. Sitten koodi kiertää jokaisen solun läpi, suorittaa verolaskelman ja kirjoittaa tulokset uuteen sarakkeeseen (sarake 5).

Liitä yllä oleva VBA -koodi edellisen koodin alle ja suorita komentosarja. Tulokset näkyvät sarakkeessa E.

Nyt joka kerta, kun avaat Excel -laskentataulukon, se sammuu automaattisesti ja saa uusimman kopion tiedoista CSV - tiedostosta. Sitten se suorittaa laskelmat ja kirjoittaa tulokset arkille. Sinun ei enää tarvitse tehdä mitään manuaalisesti!

Laske tulokset painiketta painamalla(Calculate Results From Button Press)

Jos haluat mieluummin hallita suorempaa laskelmien suorittamista sen sijaan, että laskenta suoritetaan automaattisesti, kun taulukko avautuu, voit käyttää ohjauspainiketta sen sijaan.

Ohjauspainikkeet(Control) ovat hyödyllisiä, jos haluat hallita, mitä laskutoimituksia käytetään. Esimerkiksi tässä samassa tapauksessa kuin yllä, entä jos haluat käyttää 5 prosentin verokantaa yhdellä alueella ja 7 prosentin verokantaa toisella?

Voit sallia saman CSV - tuontikoodin suorittamisen automaattisesti, mutta jättää verolaskentakoodin toimimaan, kun painat asianmukaista painiketta.

Käytä samaa laskentataulukkoa kuin yllä, valitse Kehittäjä(Developer) - välilehti ja valitse Lisää(Insert) nauhan Ohjaimet(Controls) - ryhmästä. Valitse avattavasta valikosta ActiveX-ohjauspainike (ActiveX Control).(push button)

Piirrä painike mihin tahansa arkin osaan pois siitä, mihin kaikki tiedot menevät.

Napsauta painiketta hiiren kakkospainikkeella ja valitse Ominaisuudet(Properties) . Muuta Ominaisuudet(Properties) - ikkunassa kuvateksti sellaiseksi, jonka haluat näyttää käyttäjälle. Tässä tapauksessa se voi olla Calculate 5% Tax .

Näet tämän tekstin näkyvän itse painonapissa. Sulje ominaisuusikkuna(properties) ja kaksoisnapsauta itse painiketta. Tämä avaa koodinmuokkausikkunan ja kursori on toiminnon sisällä, joka suoritetaan, kun käyttäjä painaa painiketta.

Liitä yllä olevan osan verolaskentakoodi tähän funktioon pitäen veroprosentin kertoimen arvossa 0,05. Muista sisällyttää seuraavat 2 riviä määrittääksesi aktiivisen arkin.

Dim ws As Worksheet, strFile As String

Set ws = ActiveWorkbook.Sheets("Sheet1")

Toista nyt prosessi uudelleen luomalla toinen painopainike. Kirjoita tekstiksi Calculate 7% Tax .

Kaksoisnapsauta(Double-click) painiketta ja liitä sama koodi, mutta aseta verokertoimeksi 0,07.

Nyt verot-sarake lasketaan sen mukaan, mitä painiketta painat.

Kun olet valmis, arkillasi on molemmat painikkeet. Jokainen niistä käynnistää erilaisen verolaskelman ja kirjoittaa eri tulokset tulossarakkeeseen. 

Voit kirjoittaa tämän valitsemalla Kehittäjä(Developer) - valikon ja valitsemalla Suunnittelutila valintanauhan (Design Mode)Ohjaimet(Controls) - ryhmästä poistaaksesi suunnittelutilan(Design Mode) käytöstä . Tämä aktivoi painikkeet. 

Kokeile valita kukin painike nähdäksesi kuinka verot-tulossarake muuttuu.

Lähetä laskentatulokset jollekin sähköpostitse(Email Calculation Results to Someone)

Entä jos haluat lähettää laskentataulukon tulokset jollekin sähköpostitse?

Voit luoda toisen painikkeen nimeltä Email Sheet to Boss käyttämällä samaa yllä olevaa menettelyä. Tämän painikkeen koodi sisältää Excel CDO -objektin käyttämisen SMTP -sähköpostiasetusten määrittämiseen ja tulosten lähettämisen sähköpostitse käyttäjän luettavassa muodossa.

Ota tämä ominaisuus käyttöön valitsemalla Työkalut ja viitteet(Tools and References) . Vieritä alas kohtaan Microsoft CDO for Windows 2000 Library , ota se käyttöön ja valitse OK .

Koodissa on kolme pääosiota, jotka sinun on luotava, jotta voit lähettää sähköpostin ja upottaa laskentataulukon tulokset.

Ensimmäinen on muuttujien määrittäminen aiheen, vastaanottajan ja lähettäjän(From) osoitteiden sekä sähköpostin rungon säilyttämiseksi.

Dim CDO_Mail As Object
Dim CDO_Config As Object
Dim SMTP_Config As Variant
Dim strSubject As String
Dim strFrom As String
Dim strTo As String
Dim strCc As String
Dim strBcc As String
Dim strBody As String
Dim LastRow As Long
Dim StartCell As Range
Dim rowCounter As Integer
Dim rng As Range, cell As Range
Dim fltTax As Double
Set ws = ActiveWorkbook.Sheets("Sheet1")
strSubject = "Taxes Paid This Quarter"
strFrom = "[email protected]"
strTo = "[email protected]"
strCc = ""
strBcc = ""
strBody = "The following is the breakdown of taxes paid on sales this quarter."

Tietenkin rungon on oltava dynaaminen riippuen siitä, mitä tuloksia taulukossa on, joten tähän sinun on lisättävä silmukka, joka kulkee alueen läpi, poimii tiedot ja kirjoittaa rivi kerrallaan runkoon.

Set StartCell = Range("A1")

'Find Last Row and Column
LastRow = ws.Cells(ws.Rows.Count, StartCell.Column).End(xlUp).Row
Set rng = ws.Range(ws.Cells(2, 4), ws.Cells(LastRow, 4))

rowCounter = 2
strBody = strBody & vbCrLf

For Each cell In rng
     strBody = strBody & vbCrLf
     strBody = strBody & "We sold " & Cells(rowCounter, 3).Value & " of " & Cells(rowCounter, 1).Value _
     & " for " & Cells(rowCounter, 4).Value & " and paid taxes of " & Cells(rowCounter, 5).Value & "."
     rowCounter = rowCounter + 1
Next cell

Seuraavassa osiossa määritetään SMTP - asetukset, jotta voit lähettää sähköpostia SMTP - palvelimesi kautta. Jos käytät Gmailia(Gmail) , tämä on yleensä Gmail - sähköpostiosoitteesi, Gmail -salasanasi ja Gmailin SMTP(Gmail SMTP) - palvelin (smtp.gmail.com).

Set CDO_Mail = CreateObject("CDO.Message") 
On Error GoTo Error_Handling
Set CDO_Config = CreateObject("CDO.Configuration")
CDO_Config.Load -1
Set SMTP_Config = CDO_Config.Fields

With SMTP_Config
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
 .Update
End With

With CDO_Mail
     Set .Configuration = CDO_Config
End With

Korvaa [email protected] ja salasana omilla tilitiedoillasi.

Aloita sähköpostin lähettäminen lisäämällä lopuksi seuraava koodi.

CDO_Mail.Subject = strSubject
CDO_Mail.From = strFrom
CDO_Mail.To = strTo
CDO_Mail.TextBody = strBody
CDO_Mail.CC = strCc
CDO_Mail.BCC = strBcc
CDO_Mail.Send

Error_Handling:
If Err.Description <> "" Then MsgBox Err.Description

Huomautus(Note) : Jos näet siirtovirheen yrittäessäsi suorittaa tätä koodia, se johtuu todennäköisesti siitä, että Google - tilisi estää "vähemmän turvallisten sovellusten" toiminnan. Sinun tulee käydä vähemmän turvallisten sovellusten asetussivulla(less secure apps settings page) ja ottaa tämä ominaisuus käyttöön.

Kun se on otettu käyttöön, sähköpostisi lähetetään. Tältä se näyttää henkilöltä, joka saa automaattisesti luodut tulossähköpostisi.

Kuten näet, voit itse asiassa automatisoida paljon Excel VBA :lla . Kokeile tässä artikkelissa oppimiesi koodinpätkien kanssa ja luo omia ainutlaatuisia VBA - automaatioita.



About the author

Olen tietokoneteknikko, jolla on yli 10 vuoden kokemus, josta 3 vuotta 店員. Minulla on kokemusta sekä Apple- että Android-laitteista ja olen erityisen taitava tietokoneiden korjaamisessa ja päivittämisessä. Nautin myös elokuvien katsomisesta tietokoneellani ja iPhonen käyttämisestä kuvien ja videoiden ottamiseen.



Related posts