4 грешки, които трябва да се избягват при програмиране на макроси на Excel с VBA

4 грешки, които трябва да се избягват при програмиране на макроси на Excel с VBA

Microsoft Excel вече е способен инструмент за анализ на данни, но с възможност за автоматизиране на повтарящи се задачи с макроси чрез писане на прост код във Visual Basic for Applications (VBA) е много по -мощен. Използвана неправилно, VBA може да причини проблеми.





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





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





Първи стъпки с VBA

VBA може да прави всякакви кокетни неща за вас. От писане на макроси, които променят листа до изпращане на имейли от електронна таблица на Excel с помощта на VBA скриптове има много малко ограничения за вашата производителност.

Ако не сте програмирали във VBA в Excel преди, ще трябва да активирате инструментите за програмисти във вашата програма Excel. Добрата новина е, че активирането на инструментите за програмисти всъщност е доста лесно. Просто отидете на Файл > Настроики и тогава Персонализирайте лентата . Просто преместете Разработчик раздел от левия прозорец надясно.



Уверете се, че в квадратчето за отметка е активиран този раздел и сега разделът за програмисти ще се появи в менюто на Excel.

Най -лесният начин да влезете в прозореца за редактор на кодове от тук е просто да кликнете върху Преглед на кода бутон под Контроли в менюто за програмисти.





Вече сте готови да напишете VBA код! Този раздел е мястото, където ще получите достъп и до VBA запис на макроси в Excel . Сега, когато Excel е готов за работа, нека разгледаме някои често срещани грешки, които трябва да се избягват, и начините за предотвратяването им.

1. Ужасни имена на променливи

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





как да намеря паролата си за facebook

По време на моите десетилетия писане на код, аз се натъкнах на много школи, когато става въпрос за конвенции за именуване на променливи и научих няколко правила по трудния начин. Ето няколко бързи съвета за създаване на имена на променливи:

  • Направете ги възможно най -кратки.
  • Направете ги възможно най -описателни.
  • Предварително ги въведете с променливия тип (логическо, цяло число и т.н. ...).

Ето примерна екранна снимка от програма, която използвам често, за да осъществявам WMIC Windows обаждания от Excel за събиране на информация за компютър.

Когато искате да използвате променливите вътре във функция в рамките на модула или обекта (ще обясня това по -долу), тогава трябва да го декларирате като „публична“ променлива, като предварително декларирате декларацията с Обществен . В противен случай променливите се декларират, като се поставят предварително с думата Нито един .

Както можете да видите, ако променливата е цяло число, тя е предшествана int . Ако това е низ, тогава стр . Това е лично предпочитание, което помага по -късно, докато програмирате, защото винаги ще знаете какъв тип данни притежава променливата, като погледнете името.

Също така, не забравяйте да дадете имена на листовете във вашата работна книга на Excel.

По този начин, когато се позовавате на името на листа във вашия Excel VBA код, имате предвид име, което има смисъл. В горния пример имам лист, в който вкарвам информация за мрежата, затова наричам листа „Мрежа“. Всеки път, когато искам да се позова на мрежовия лист, мога да го направя бързо, без да търся какъв е номерът на листа.

2. Прекъсване вместо затваряне

Един от най -често срещаните проблеми, които новите VBA програмисти имат, когато започват да пишат код, е правилната работа с цикли.

Циклирането е много често срещано в Excel, тъй като често обработвате стойности на данни в цял ред или колона, така че трябва да се завъртите, за да ги обработите.

Новите програмисти често искат просто да излязат от цикъл (VBA For цикли или VBA Do While цикли) незабавно, когато определено условие е вярно.

Ето пример за този метод, използван за прекъсване на цикъл на VBA.

For x = 1 To 20
If x = 6 Then Exit For
y = x + intRoomTemp
Next i

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

По -често кодът, който идва след тази „пауза“, е важен за обработка. Много по -чист и по -професионален начин да се справите с условията, при които искате да оставите цикъл по средата, е просто да включите това условие за излизане в нещо като VBA While.

While (x>=1 AND x<=20 AND x6)
For x = 1 To 20
y = x + intRoomTemp
Next i
Wend

Това позволява логически поток на вашия код. Сега кодът ще премине и ще спре, след като достигне 6. Няма нужда да включвате неудобни команди EXIT или BREAK в средата на цикъла.

3. Не използвайте масиви

Друга интересна грешка, която правят новите VBA програмисти, се опитва да обработи всичко вътре в множество вложени цикли, които филтрират надолу по редове и колони по време на процеса на изчисление.

Това също може да доведе до големи проблеми с производителността. Преминаването през колона и извличането на стойностите всеки път е убийство за вашия процесор. По -ефективен начин за обработка на дълги списъци с числа е използването на масив.

Ако никога преди не сте използвали масив, не се страхувайте. Представете си масив като тава за кубчета лед с определен брой „кубчета“, в които можете да поставите информация. Кубчетата са номерирани от 1 до 12 и по този начин „поставяте“ данни в тях.

Можете лесно да дефинирате масив само като въведете Затъмнете arrMyArray (12) като цяло число .

как да изпратите имейл до телефонен номер

Това създава „тава“ с 12 слота, които можете да запълните.

Ето как може да изглежда кодът на цикъл на ред без масив:

Sub Test1()
Dim x As Integer
intNumRows = Range('A2', Range('A2').End(xldown)).Rows.Count
Range('A2').Select
For x = 1 To intNumRows
If Range('A' & str(x)).value <100 then
intTemp = (Range('A' & str(x)).value) * 32 - 100
End If
ActiveCell.Offset(1, 0).Select
Next
End Sub

В този пример кодът се обработва надолу през всяка отделна клетка в диапазона и извършва изчисляване на температурата.

Ако някога искате да извършите друго изчисление на същите тези стойности, процесът би бил тромав. Ще трябва да дублирате този код, да преработите всички тези клетки и да извършите новото си изчисление. Всичко за една промяна!

Ето един по -добър пример, като използвате масив. Първо, нека създадем масива.

Sub Test1()
Dim x As Integer
intNumRows = Range('A2', Range('A2').End(xldown)).Rows.Count
Range('A2').Select
For x = 1 To intNumRows
arrMyArray(x-1) = Range('A' & str(x)).value)
ActiveCell.Offset(1, 0).Select
Next
End Sub

The x-1 за насочване към елемента на масива е необходимо само защото цикълът For започва от 1. Елементите на масива трябва да започват от 0.

Сега, когато имате масива, е много лесно да обработвате съдържанието.

Sub TempCalc()
For x = 0 To UBound(arrMyArray)
arrMyTemps(y) = arrMyArray(x) * 32 - 100
Next
End Sub

Този пример преминава през целия масив от редове ( UBound ви дава броя на стойностите на данните в масива), прави изчислението на температурата и след това го поставя в друг масив, наречен arrMyTemps .

4. Използване на твърде много справки

Независимо дали програмирате в пълноправен Visual Basic или VBA, ще трябва да включите „препратки“ за достъп до определени функции.

Препратките са нещо като „библиотеки“, изпълнени с функционалност, която можете да използвате, ако активирате този файл. Можете да намерите справки в изгледа за програмисти, като щракнете върху Инструменти в менюто и след това щракнете върху Препратки .

Това, което ще намерите в този прозорец, са всички избрани в момента референции за текущия ви проект VBA.

Трябва да проверите този списък, защото ненужните препратки могат да разхищават системните ресурси. Ако не използвате никакви манипулации с XML файлове, тогава защо да поддържате Microsoft XML избран? Ако не комуникирате с база данни, премахнете Microsoft DAO и т.н.

Ако не сте сигурни какво правят тези избрани препратки, натиснете F2 и ще видите Object Explorer. В горната част на този прозорец можете да изберете референтната библиотека, която да разглеждате.

След като изберете, ще видите всички обекти и налични функции, върху които можете да кликнете, за да научите повече.

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

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

какво е tbh в instagram

Програмиране в Excel VBA

Цялата идея за действително писане на код в Excel плаши много хора, но този страх наистина не е необходим. Visual Basic for Applications е много прост език за изучаване и ако следвате основните общи практики, споменати по -горе, ще се уверите, че вашият код е чист, ефективен и лесен за разбиране.

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

Дял Дял Туит електронна поща Струва ли си да надстроите до Windows 11?

Windows е преработен. Но достатъчно ли е това, за да ви убеди да преминете от Windows 10 към Windows 11?

Прочетете Напред
Свързани теми
  • Производителност
  • Програмиране
  • Програмиране
  • Visual Basic програмиране
  • Microsoft Excel
За автора Антъни Грант(40 статии са публикувани)

Антъни Грант е писател на свободна практика, занимаващ се с програмиране и софтуер. Той е специалист по компютърни науки, занимаващ се с програмиране, Excel, софтуер и технологии.

Още от Антъни Грант

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и изключителни оферти!

Щракнете тук, за да се абонирате