Slik går du gjennom Excel-regnearket ditt med VBA

Noen ganger er det nyttig å lese et regneark linje for linje og selektivt ta data fra det. Et eksempel nedenfor viser hvordan du gjør dette.

Artikkelen forutsetter at leseren har utviklerbåndet vist og er kjent med VBA Editor. Hvis ikke, vennligst Google "Excel Developer Tab" eller "Excel Code Window".

Følgende eksempel manipulerer dataene ved å undersøke hver rad med e-postadresser og sette dem sammen til en enkelt adresselinje. Mens Excel har innebygde Transpose-funksjoner, har vi til hensikt med koden vår å ekskludere noen spesifikke adresser og legge til skilletegn.

Vår søknad trenger kun ett ark. Kopier informasjonen nedenfor til celle A1:

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

Plasser en knapp på skjemaet for å starte koden.Plasser en knapp på skjemaet for å starte koden

La oss anta at det finnes hundrevis av disse e-postene i stedet for bare fem; vi ønsker å sende den samme meldingen og den samme kopien av manuset vårt til hver av dem. Det finnes flere måter å gjøre dette på, spesielt ved å kalle e-postprogrammet, som Outlook, fra VBA-kode. Denne øvelsen tjener imidlertid to formål:

  • Vis hvordan du enkelt sykler gjennom et regneark;
  • Fremhev Excels evne til å undersøke hver rad, og handle på den.

VBA-koden

VBA-koden vil sette sammen alle adressene, og sette inn et semikolon etter hver, slik at de kan limes inn på én gang i e-postens adressatfelt. Du vil merke fra koden at etter å ha undersøkt radene, vil den ekskludere franske.

Sett inn en modul, og skriv inn 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 cellen i kolonne A, bare radene går videre. For å referere til informasjon andre steder i en rad, bruker vi:

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

For å få en verdi fra kolonne B i den aktive raden, for eksempel, ville koden lese Activecell.offset(0, 1). For å få A2s verdi når vi er i A3 ville lese Activecell.offset(-1, 0).

For å teste koden din, tilordne knappen til makroen "Main".

Noen Internett-leverandører kan begrense antallet e-poster du kan sende samtidig, som en anti-spam forholdsregel. Hvis du bruker denne metoden, er det sannsynligvis best å sjekke med dem før du sender hundrevis av e-poster på en gang.

Håndtering av Excel-filkorrupsjon

Korrupsjon av Excel-filFra tid til annen støter vi på at arbeidsbøker er ødelagt i en slik grad at Excel selv ikke kan gjenopprette dem. Dette er en katastrofe for de fleste Excel-brukere, inkludert ekspertene. Men hvis du har et effektivt gjenopprettingsverktøy for hånden, kan du gjenopprette skadede xlsx-filer enkelt og raskt.

Forfatterintroduksjon:

Felix Hooker er en datagjenopprettingsekspert innen DataNumen, Inc., som er verdensledende innen datagjenopprettingsteknologier, inkludert reparasjon rar korrupsjon og sql-programvareprodukter. For mer informasjon besøk www.datanumen. Med

Kommentarer er stengt.