Så här går du igenom ditt Excel-arbetsblad med VBA

Ibland är det användbart att läsa ett kalkylblad rad för rad och selektivt ta data från det. Ett exempel nedan visar hur man gör detta.

Artikeln förutsätter att läsaren har utvecklarbandet och är bekant med VBA Editor. Om inte, vänligen googla "Excel Developer Tab" eller "Excel Code Window".

Följande exempel manipulerar data genom att undersöka varje rad e-postadresser och sammanfoga dem till en enda adressrad. Medan Excel har inbyggda transponeringsfunktioner har vi för avsikt att med vår kod utesluta vissa specifika adressater och lägga till avgränsare.

Vår ansökan behöver bara ett ark. Kopiera informationen nedan till cell A1:

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

Placera en knapp på formuläret för att starta koden.Placera en knapp på formuläret för att starta koden

Låt oss anta att det finns hundratals av dessa e-postmeddelanden istället för bara fem; vi vill skicka var och en samma meddelande och samma kopia av vårt manus. Det finns flera sätt att göra detta, most särskilt genom att ringa e-postadressen, som Outlook, från VBA-kod. Denna övning tjänar dock två syften:

  • Visa hur man enkelt går igenom ett kalkylblad;
  • Markera Excels förmåga att undersöka varje rad och agera på den.

VBA-koden

VBA-koden sammanfogar alla adresser och infogar en semikolon efter varje, så att de kan klistras in på en gång i e-postadressens adressatfält. Du kommer att notera från koden att det, efter att ha granskat raderna, utesluter franska.

Sätt i en modul och ange följande:

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 håller den aktiva cellen i kolumn A, bara raderna går vidare. För att referera till information någon annanstans i rad använder vi:

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

För att få ett värde från kolumn B i den aktiva raden, till exempel, skulle koden läsa Activecell.offset (0, 1). Att få A2: s värde när vi är i A3 skulle läsa Activecell.offset (-1, 0).

För att testa din kod, tilldela knappen till makrot "Main".

Vissa Internet-tjänsteleverantörer kan som en försiktighetsåtgärd mot skräppost begränsa antalet e-postmeddelanden du kan skicka på en gång. Om du använder den här metoden är det förmodligen bäst att kolla med dem innan du skickar hundratals e-postmeddelanden på en gång.

Hantering av Excel-filkorruption

Excel-filkorruptionIbland stöter vi på korruption av arbetsböcker i den utsträckning att Excel inte kan återställa dem. Detta är en katastrof för most Excel-användare, inklusive experterna. Men om du har ett effektivt återställningsverktyg till hands kan du återställa skadade xlsx-filer enkelt och snabbt.

Författarintroduktion:

Felix Hooker är en dataåterställningsexpert i DataNumen, Inc., som är världsledande inom teknik för återställning av data, inklusive reparation rar korruption och mjukvaruprodukter för SQL-återställning. För mer information besök www.datanumen.com

Kommentarer är stängda.