Kuidas VBA-ga Exceli töölehte sirvida

Mõnikord on kasulik töölehte rida-realt lugeda ja sellelt valikuliselt andmeid võtta. Allolev näide näitab, kuidas seda teha.

Artiklis eeldatakse, et lugejal on kuvatud arendaja lint ja ta tunneb VBA redaktorit. Kui ei, siis kasutage Google'i „Exceli arendaja vahekaarti” või „Exceli koodi akent”.

Järgmine näide manipuleerib andmetega, uurides iga e-posti aadressi rida ja ühendades need üheks aadressireale. Kuigi Excelil on sisseehitatud Transpose funktsioonid, kavatseme oma koodiga välistada mõned konkreetsed adressaadid ja lisada eraldajad.

Meie rakendus vajab ainult ühte lehte. Kopeerige allolev teave lahtrisse A1:

E-posti aadress
tcruise@paramount.com
julia.R@disney.com
Jules.dassin@gaumont.co.fr
EnricoFellini@cinecitta.co.it
marymontrary@bedlam.org.uk

Koodi käivitamiseks asetage vormile nupp.Koodi käivitamiseks asetage vormile nupp

Oletame, et neid e-kirju on viie asemel sadu; tahame saata igaühele sama sõnumi ja sama koopia oma stsenaariumist. Selleks on mitu võimalust, most eriti helistades meili saatjale, nagu Outlook, VBA-koodist. Sellel harjutusel on aga kaks eesmärki:

  • Näidake, kuidas hõlpsalt töölehte läbida;
  • Tõstke esile Exceli võime iga rida uurida ja tegutsege selle järgi.

VBA kood

VBA-kood ühendab kõik aadressid, lisades iga järele semikooloni, et need saaks korraga kleepida meili adressaadiväljale. Märkate koodist, et pärast ridade uurimist välistab see prantsuskeelsed.

Sisestage moodul ja sisestage järgmine:

Option Explicit
Dim strEmail As String
Dim strAll As String

Sub Main()
    strAll = ""
    Range("C2") = strAll     'clear previous program results
    Sheets("Sheet1").Select
    Range("A2").Select
    Do While ActiveCell > ""      'loop until row 7
        strEmail = ActiveCell
        If Right(strEmail, 2) <> "fr" Then      'exclude France
            strAll = strAll & strEmail & ";"
        End If
        Range("A" & ActiveCell.Row + 1).Select     'move on a row in the SAME column
    Loop
    Range("C2") = strAll
End Sub

Kood hoiab aktiivset lahtrit veerus A, edasi liiguvad ainult read. Teabe viitamiseks mujal reas kasutaksime järgmist:

Variable = Activecell.offset(offset rows, offset columns)

Näiteks aktiivse rea veerust B väärtuse saamiseks loeks kood Activecell.offset(0, 1). Et saada A2 väärtust, kui oleme A3-s, loeks Activecell.offset(-1, 0).

Koodi testimiseks määrake nupp makrole "Põhi".

Mõned Interneti-teenuse pakkujad võivad rämpspostivastase ettevaatusabinõuna piirata korraga saadetavate meilide arvu. Kui kasutate seda meetodit, on ilmselt kõige parem nendega enne sadade meilide ühekorraga saatmist nendega ühendust võtta.

Exceli faili korruptsiooni käsitlemine

Exceli faili rikkumineAeg-ajalt puutume kokku töövihikute riknemisega niivõrd, et Excel ise ei suuda neid taastada. See on katastroof most Exceli kasutajad, sealhulgas eksperdid. Kui teil on aga tõhus taastamistööriist käepärast, saate taastada kahjustatud xlsx-failid lihtsalt ja kiiresti.

Autori sissejuhatus:

Felix Hooker on andmete taastamise ekspert DataNumen, Inc., mis on maailmas juhtiv andmete taastamise tehnoloogiate, sealhulgas remont rar korruptsioon ja SQL-i taastamise tarkvaratooted. Lisateabe saamiseks külastage www.datanumenCom

Kommentaarid on suletud.