Як налагодити макрос Excel VBA, який не працює. У Excel VBA є дивовижні інструменти, які дозволяють побачити поточне значення, яке зберігається у змінних, коли ви переходите через код по одному рядку за раз. Якщо у вас є макрос, який не працює,
Переглянути відео
- У вас є макрос Excel VBA, який не працює
- VBA має дивовижні інструменти налагодження
- Замість того, щоб запускати свій код, ви можете пройти через код за допомогою F8
- Рядок жовтого кольору - це рядок, який він повинен бути запущений
- Наведіть курсор на будь-яку змінну, щоб побачити значення цієї змінної.
- Перейдіть вперед і назад у Excel, щоб побачити, що відбувається
Стенограма відео
Дізнайтеся Excel з подкасту, епізод 2096: Налагодження макросу VBA
Привіт, ласкаво просимо до мережі, я Білл Джелен. Сьогоднішнє запитання: Хтось мав якийсь код, який я опублікував на старому відео YouTube, і вони опублікували коментар, кажучи: "Ах, це не працює. Це не зберігає дублікат рахунку-фактури, але не видає помилки ". Я не знаю, що не так з кодом. Гаразд, знаєте, дивіться, є чудові інструменти, які доступні, коли ви не працюєте з VBA Macro. Отже, у нас тут є кнопка, яка повинна запускати якийсь код. Я збираюся призначити макрос, він називається SaveInvoice. Я натисну редагувати, і ми закінчимо VBA. І зазвичай, коли ми натискаємо цю кнопку, він просто запускає цей код. БАМ! Начебто все відбулося дуже швидко, але ви не можете спостерігати за тим, що відбувається.
Отже, під інструментами налагодження, однією з моїх улюблених речей є Debug Step Into, для якої ви побачите комбінацію клавіш F8, і це дозволяє нам запускати код по одному рядку за раз. Тому я натиснув F8 там, і це - рядок у жовтому кольорі - це рядок, який він збирається виконати. Отже, якщо натиснути F8, він перескакує ці два оголошення, і тепер ми збираємось зробити ActiveSheet.Copy. Отже, що насправді прекрасно, ви знаєте, особливо якщо у вас великий монітор, вікно Podcast занадто мале, але ви можете зробити так, щоб ви могли спостерігати за запуском макросу. Тож зараз це збирається зробити ActiveSheet.Copy. Зараз я в робочій книжці під назвою Podcast 2096. Ось аркуш під назвою Рахунок-фактура, і коли я натисну клавішу F8, ви побачите, що я зараз у новій книзі під назвою Книга2, і у нас є лише Рахунок-фактура, добре.
І зараз ми збираємося призначити цю велику, довгу справу Новому FN. Натисніть F8. Гаразд, схоже, нічого тут не сталося, бо тут нічого не сталося. Але ось найкрасивіша річ, тепер я призначив щось для тієї змінної, яка називається New FN, і якщо я наведу курсор миші та наведу курсор на New FN, з’явиться маленька підказка, яка показує, що зберігається в New FN. Отже, зберігається ім’я файлу, там є папка, куди воно буде йти. Він називається Invoice1234, оскільки він взяв значення з F4, а потім додав PDF.
Добре зараз, одне з найбільш неприємних моментів у Excel - це те, що якщо пам’ять починає вичерпуватися, ця підказка не хоче з’являтися. Ви зависаєте там і нічого не трапиться. Іноді доводиться натискати, щоб зробити це тут, а іноді воно взагалі не з’явиться. Коли він взагалі не з’являється, ми можемо зробити Ctrl + G. Ctrl + G - це безпосереднє вікно, і тоді ми будемо використовувати? що є ярликом для Debug.Print, NewFN. Отже, іншими словами, скажіть мені, що в New FN, і він покаже вам, що в New FN тут.
Гаразд, зараз ми збираємось запустити цей рядок коду, який створить PDF. Гаразд, так що я натисну F8. Гаразд, і в цей момент у нас повинен бути новий PDF-файл із номером 1234, і якщо я піду заглянути в папку, досить впевнений, що Inv1234 11 травня о 6:25 був щойно створений. Чудово, правда?
Добре, зараз ми дійшли до того, що у нас проблема. Гаразд, ми натискаємо тут клавішу F8, і вона відображається як копія. Добре, це спрацювало. А потім F8, і ми можемо побачити, що в новому FN. Гаразд, у ньому є DupInv1234.pdf, і ви навіть можете повернутися сюди і просто натиснути кнопку Друк NewFN, і тоді ви побачите, що ми змінили назву файлу, добре. Отже, все круто. А потім ми натискаємо клавішу F8, щоб запустити Створення PDF-файлу. Чудово! Все виглядає чудово, так?
Тож поверніться до наших файлів Podcast. Добре, але замість того, щоб мати щось, що називається DupInv1234, я просто не знаю, як щось називається Book2. Гаразд, він щойно був створений хвилину тому. Це повинен бути єдиний, але гі! Здається, це неправильна назва. Добре, ми повертаємось до VBA, і я знаю, що я щойно присвоїв правильне значення New FN, добре. А давайте подивимось, як ми це зберігаємо. Ми зберігаємо це як новийFN1, який порожній; а оскільки він порожній, це означає, що він бере ім'я файлу, яке в даному випадку є Book2, оскільки я зробив його копію. І змінив його - О дивіться! Отже, тут я присвоїв ім’я NewFN, а потім зберег цей NewFN1, а тепер тому, що я налагоджую та навожу - Наведення - це найкраще, що було коли-небудь. Сподіваюся, мені вдасться зрозуміти, що відбувається.Тож я повертаюся і міняю NewFN1. Зараз, ось чудова річ. Гаразд, отже, вже пройшов цей рядок у Macro, але я можу перетягнути його назад і сказати, добре, давайте запустимо це знову F8. А тепер давайте створимо PDF. Гаразд, і там воно з’являється з правильною назвою, і все круто.
Добре, тепер, коли я знаю, що я закінчив, все чудово. Звідси все буде працювати. Я просто натискаю "Виконати", і він пробіжить до кінця коду. Добре, іноді у вас буде довгий макрос, знаєте, сотні рядків коду, які працюють, а потім одна конкретна частина, яка не працює, добре? Тож тут було лише згадано пару інших інструментів. Якщо вам потрібно перестрибнути цілу купу коду і запустити все до цього моменту, ну, один із способів це зробити - натиснути тут і створити точку зупинки. Гаразд, так що тепер, коли я запустив це, воно запустить все до того моменту. Я можу просто натиснути "запустити", і він зупиниться, або якщо ви навіть не хочете встановлювати точку зупинки, ми просто клацнемо тут і скажемо "Налагодження", "Запустити в курсор". Біжи до курсору.Тепер я знаю, що це спричинить тут проблему, оскільки код для зміни цього номера рахунку-фактури я ще не підключив. Тож я просто вкажу новий номер рахунку-фактури, і я зараз на цьому рядку. Налагодження, запуск до курсору, який є Ctrl + F8. Гаразд, отже, тепер все закінчилося до цього моменту, і те, що ми повинні мати, це те, що ми повинні мати змогу побачити, що він щойно створив Inv1235, добре. І ось зараз - ми на цьому рядку коду. Я можу просто натиснути F8, щоб пропустити один рядок, або просто пробігти решту шляху. І є наш DupInv1235, добре? Отже, інструменти налагодження тут, у VBA, чудові. Давайте запустимо код по одному рядку за один раз, розташуйте екран так, щоб ми могли бачити як код, який працює, так і результати коду зліва. І ви знаєте, сподіваємось, ви зможете зрозуміти, що з кодом пішло не так.
Гаразд, так підсумок епізоду: майте макрос Excel VBA, який не працює. Він має дивовижні інструменти налагодження. Замість того, щоб запускати свій код, ви можете пройти через код за допомогою F8. Рядок жовтого кольору - це лінія, яка має бути запущена. Ви можете навести курсор на змінну, щоб побачити значення цієї змінної, перейти вперед і назад у Excel, щоб побачити, що відбувається.
Ну, привіт, я хочу подякувати вам за те, що завітали. Ми побачимось наступного разу для чергової трансляції від.
Завантажити файл
Завантажте зразок файлу тут: Podcast2096.xlsm