Het is soms handig om een werkblad regel voor regel te lezen en er selectief gegevens uit te halen. In een voorbeeld hieronder ziet u hoe u dit doet.
In het artikel wordt ervan uitgegaan dat de lezer het ontwikkelaarslint heeft weergegeven en bekend is met de VBA-editor. Als dit niet het geval is, gebruik dan Google "Excel Developer Tab" of "Excel Code Window".
In het volgende voorbeeld worden de gegevens gemanipuleerd door elke rij e-mailadressen te onderzoeken en ze samen te voegen tot één adresregel. Hoewel Excel ingebouwde Transpose-functies heeft, willen we met onze code enkele specifieke geadresseerden uitsluiten en scheidingstekens toevoegen.
Onze applicatie heeft slechts één blad nodig. Kopieer onderstaande informatie naar cel A1:
| E-mailadres |
| tcruise@paramount.com |
| julia.R@disney.com |
| Jules.dassin@gaumont.co.fr |
| EnricoFellini@cinecitta.co.it |
| marymontrary@bedlam.org.uk |
Plaats een knop op het formulier om de code te activeren.
Laten we aannemen dat er honderden van deze e-mails zijn in plaats van slechts vijf; we willen ze allemaal hetzelfde bericht en dezelfde kopie van ons scenario sturen. Er zijn verschillende manieren om dit te doen, met name door de e-mailclient, zoals Outlook, vanuit VBA-code aan te roepen. Deze oefening dient echter twee doelen:
- Laat zien hoe je eenvoudig door een werkblad bladert;
- Markeer het vermogen van Excel om elke rij te onderzoeken en ernaar te handelen.
De VBA-code
De VBA-code zal alle adressen samenvoegen en achter elk een puntkomma invoegen, zodat ze in één keer in het geadresseerdeveld van de e-mail kunnen worden geplakt. U zult aan de code zien dat, na onderzoek van de rijen, Franse rijen worden uitgesloten.
Voeg een module in en voer het volgende in:
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
De code houdt de actieve cel in kolom A, alleen de rijen gaan verder. Om elders op een rij naar informatie te verwijzen, gebruiken we:
Variable = Activecell.offset(offset rows, offset columns)
Om bijvoorbeeld een waarde uit kolom B in de actieve rij te krijgen, zou de code lezen Actievecel.offset(0, 1). Om de waarde van A2 te krijgen als we in A3 zitten, zou lezen Actievecel.offset(-1, 0).
Om uw code te testen, wijst u de knop toe aan de macro "Hoofd".
Sommige internetproviders kunnen, als voorzorgsmaatregel tegen spam, het aantal e-mails beperken dat u tegelijk kunt verzenden. Als u deze methode gebruikt, is het waarschijnlijk het beste om contact met hen op te nemen voordat u honderden e-mails in één keer verzendt.
Omgaan met corruptie van Excel-bestanden

Auteur Introductie:
Felix Hooker is een expert op het gebied van gegevensherstel DataNumen, Inc., de wereldleider in technologieën voor gegevensherstel, waaronder reparatie rar corruptie en sql-herstelsoftwareproducten. Voor meer informatie bezoek www.datanumen.com
