Как да прегледате вашия работен лист на Excel с VBA

Споделете сега:

Понякога е полезно да четете работен лист ред по ред и избирателно да вземате данни от него. Пример по-долу показва как да направите това.

Статията предполага, че на читателя е показана лентата за програмисти и е запознат с редактора на VBA. Ако не, моля Google „Раздел за програмисти на Excel“ или „Прозорец на кода на Excel“.

Следващият пример манипулира данните, като изследва всеки ред имейл адреси и ги обединява в един адресен ред. Докато Excel има вградени функции за транспониране, ние възнамеряваме с нашия код да изключим някои конкретни адресати и да добавим разделители.

Нашето приложение се нуждае само от един лист. Копирайте информацията по-долу в клетка A1:

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

Поставете бутон във формуляра, за да започнете кода.Поставете бутон във формуляра, за да започнете кода

Да предположим, че има стотици такива имейли, вместо само пет; искаме да изпратим на всеки едно и също съобщение и едно и също копие от нашия сценарий. Има няколко начина да направим това, най-вече чрез извикване на имейл програмата, като Outlook, от VBA код. Това упражнение обаче служи за две цели:

  • Покажете как лесно да циклирате през работен лист;
  • Подчертайте способността на Excel да изследва всеки ред и да действа според него.

Кодът на VBA

Кодът на VBA ще свърже всички адреси, като след всеки ще се вмъкне точка с двоеточие, така че те да могат да бъдат поставени с едно движение в полето за адреса на имейла. От кода ще забележите, че след проверка на редовете той ще изключи френските.

Поставете модул и въведете следното:

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

Кодът запазва активната клетка в колона А, само редовете продължават напред. За да препратим информация другаде поред, бихме използвали:

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

Например, за да се получи стойност от колона Б в активния ред, кодът ще прочете Activecell.offset (0, 1). За да получим стойността на A2, когато сме в A3, ще прочетем Activecell.offset (-1, 0).

За да тествате кода си, задайте бутона на макроса „Основен“.

Някои доставчици на интернет услуги, като предпазна мярка срещу нежелана поща, може да ограничат броя на имейлите, които можете да изпращате наведнъж. Ако използвате този метод, вероятно е най-добре да се консултирате с тях, преди да изпратите стотици имейли наведнъж.

Работа с повреда на файлове в Excel

Корупция на файлове в ExcelОт време на време се сблъскваме с повреда на работни книги до степен, в която самият Excel не може да ги възстанови. Това е бедствие за повечето потребители на Excel, включително експертите. Ако обаче имате под ръка ефективен инструмент за възстановяване, можете да го направите. повредени xlsx файлове лесно и бързо.

Въведение на автора:

Феликс Хукър е експерт по възстановяване на данни в DataNumen, Inc., която е световен лидер в технологиите за възстановяване на данни, включително ремонт rar корупция и sql софтуерни продукти за възстановяване. За повече информация посетете WWW.datanumen.com

Споделете сега:

Коментарите са забранени.