Sådan løber du igennem dit Excel-regneark med VBA

Nogle gange er det nyttigt at læse et regneark linje for linje og selektivt tage data fra det. Et eksempel nedenfor viser, hvordan du gør dette.

Artiklen antager, at læseren har udviklerbåndet vist og er bekendt med VBA Editor. Hvis ikke, bedes du Google “fanen Excel-udvikler” eller “vinduet Excel-kode”.

Følgende eksempel manipulerer dataene ved at undersøge hver række af e-mail-adresser og sammenkæde dem til en enkelt adresselinje. Mens Excel har indbyggede transponeringsfunktioner, har vi til hensigt med vores kode at udelukke nogle specifikke adressater og tilføje afgrænsere.

Vores ansøgning har kun brug for et ark. Kopier nedenstående oplysninger til celle A1:

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

Placer en knap på formularen for at starte koden.Placer en knap på formularen for at starte koden

Lad os antage, at der er hundredvis af disse e-mails i stedet for kun fem; vi vil sende hver den samme besked og den samme kopi af vores manuskript. Der er flere måder at gøre dette på, især ved at kalde e-mail-programmet, som f.eks. Outlook, fra VBA-kode. Denne øvelse tjener dog to formål:

  • Vis, hvordan man cykler let gennem et regneark;
  • Fremhæv Excels evne til at undersøge hver række og handle på den.

VBA-koden

VBA-koden sammenkæder alle adresserne og indsætter en semikolon efter hver, så de kan indsættes på én gang i mailens adressatfelt. Du vil bemærke fra koden, at det efter at have undersøgt rækkerne udelukker franske.

Indsæt et modul, og indtast følgende:

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

Koden holder den aktive celle i kolonne A, kun rækkerne går videre. For at henvise til oplysninger andetsteds i træk bruger vi:

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

For at få en værdi fra kolonne B i den aktive række, ville koden for eksempel læses Activecell.offset (0, 1). At få A2s værdi, når vi er i A3, ville læse Activecell.offset (-1, 0).

For at teste din kode, tildel knappen til makroen "Main".

Nogle internetudbydere kan som en sikkerhedsforanstaltning mod spam begrænse antallet af e-mails, du kan sende på én gang. Hvis du bruger denne metode, er det sandsynligvis bedst at tjekke med dem, inden du sender hundreder af e-mails på én gang.

Håndtering af Excel-filkorruption

Excel-filkorruptionFra tid til anden støder vi på beskadigelse af projektmapper i en sådan grad, at Excel selv ikke kan gendanne dem. Dette er en katastrofe for de fleste Excel-brugere, inklusive eksperterne. Men hvis du har et effektivt gendannelsesværktøj ved hånden, kan du gendanne beskadigede xlsx-filer let og hurtigt.

Forfatter Introduktion:

Felix Hooker er en datagendannelsesekspert i DataNumen, Inc., som er verdens førende inden for datagendannelsesteknologier, herunder reparere rar korruption og SQL-genopretningssoftwareprodukter. For mere information besøg www.datanumen.com

Kommentarer er lukket.