Elettracompany.com

Компьютерный справочник
5 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Vba excel время выполнения макроса

11. Типы ошибок в программах. Перехват ошибок времени выполнения

Лабораторная работа 11.1 Перехват ошибок времени выполнения

Обработка ошибок в макросах VBA в Excel, ошибки времени выполнения (run-time errors)

Подготовка:

1. Создайте новый файл Excel и сохраните его как C:ErrorHandling. xls .

2. В ячейку A1 этого файла введите значение «Результат деления:».

3. Щелкните правой кнопкой мыши по любой панели инструментов или меню и в открывшемся списке доступных панелей инструментов выберите Элементы управления.

4. На панели инструментов Элементы управления нажмите кнопку Режим конструктора (верхняя левая кнопка) и в этом режиме поместите на лист Excel новую кнопку. Для этого нужно щелкнуть по объекту Кнопка на панели инструментов Элементы управления и на листе определить местонахождение и размеры этой кнопки.

5. Щелкните по созданной вами кнопке правой кнопкой мыши и в контекстном меню выберите Свойства. Определите для нее свойства по вашему усмотрению.

6. В режиме конструктора щелкните по кнопке правой кнопкой мыши и в контекстном меню выберите Исходный текст. Откроется редактор кода Visual Basic с созданной процедурой для события Click данной кнопки. Поместите в него следующий код :

Private Sub CommandButton1_Click()

Dim nNum1 As Integer

Dim nNum2 As Integer

Dim nResult As Integer

nNum 1 = InputBox («Введите первое число»)

nNum 2 = InputBox («Введите второе число»)

nResult = nNum1 / nNum2

7. Вернитесь на ваш лист Excel , выйдите из режима конструктора (щелкнув по кнопке Выход из режима конструктора на панели инструментов Элементы управления) и нажмите на созданную вами на листе кнопку. Убедитесь, что если вводить допустимые значения для делимого и делителя, то код работает правильно и выводит результат деления в ячейку B2.

Задание:

Измените эту программу таким образом, чтобы обеспечить защиту от ввода пользователем недопустимых значений (например, строковых значений делимого и делителя или значения делителя, равного 0).

Не обязательно оставлять код по приему значений от пользователя и выполнению деления в обработчике события Click вашей кнопки. Этот код при желании можно перенести во внешние процедуры или функции.

Решение:

Существует множество вариантов решения этой задачи. Примеры приведены далее.

Так, например, может выглядеть решение с обработкой кода ошибки и повторным вызовом функцией самой себя:

Private Sub CommandButton1_Click()

Public Sub subPrepare()

Dim nReturnCode As Integer

Dim nAnswer As Integer

Select Case nReturnCode

MsgBox («Делить на ноль нельзя!»)

nAnswer = MsgBox(«Повторить?», vbYesNo)

If nAnswer = vbYes Then

MsgBox (» Нужно число !»)

nAnswer = MsgBox(«Повторить?», vbYesNo)

If nAnswer = vbYes Then

MsgBox (» Неизвестная ошибка «)

nAnswer = MsgBox(«Повторить?», vbYesNo)

If nAnswer = vbYes Then

On Error Resume Next

Dim nNum1 As Integer

Dim nNum2 As Integer

Dim nResult As Integer

nNum1 = InputBox(» Введите первое число «)

nNum 2 = InputBox («Введите второе число»)

nResult = CInt(nNum1) / CInt(nNum2)

Select Case Err.Number

А вот решение с обработкой кода ошибки и циклом:

Private Sub CommandButton1_Click()

Dim nNum1 As Variant

Dim nNum2 As Variant

Dim nResult As Integer

Dim nError As Integer

nNum1 = InputBox(» Введите первое число :»)

On Error Resume Next

If Err.Number = 13 Then

MsgBox (» Нужно число «)

On Error GoTo 0

Loop While (nNum1 = «»)

nNum2 = InputBox(» Введите второе число :»)

On Error Resume Next

If Err.Number = 13 Then

MsgBox (» Нужно число «)

ElseIf nNum 2 = 0 Then

MsgBox («Делить на ноль нельзя!»)

On Error GoTo 0

Loop While (nNum2 = «»)

nResult = nNum1 / nNum2

Еще один вариант решения вообще не допускает возникновения ошибок:

Private Sub CommandButton1_Click()

Dim nNum1 As Variant

Dim nNum2 As Variant

Dim nResult As Integer

nNum 1 = InputBox («Введите первое число:»)

If IsNumeric(nNum1 & «») Then Exit Do

MsgBox «Нужно число»

nNum 2 = InputBox («Введите второе число:»)

Трюк №82. Как запустить макрос в определенное время

Часто вы, наверняка, думаете, как было бы удобно запускать макрос в предопределенное время или через указанные интервалы. К счастью, в Excel предусмотрен метод VBA, который делает это возможным.

При помощи метода Application.OnTime можно запускать макрос автоматически, но сначала необходимо провести небольшую настройку. Предположим, есть макрос, который вы хотите запускать каждый день в 15:00 (3:00 p.m.). Сначала нужно определить, как заставить выполниться метод OnTime. Это можно сделать с помощью события Workbook_0pen в частном модуле для объекта Workbook.

В Windows самый быстрый способ попасть в частный модуль объекта Workbook (ThisWorkbook, Эта Книга) — правой кнопкой мыши щелкнуть значок Excel рядом с меню Файл (File) и в контекстном меню выбрать команду Исходный текст (View Code). (На Macintosh откройте VBE и затем откройте модуль объекта Workbook в окне Project.) Введите код из листинга 7.2.

//Листинг 7.2 Private Sub Workbook Open () Application.OnTime T1meValue(«15:00:00»). «MyMacro» End Sub

Вместо MyMacro следует подставить имя макроса, который вы хотите выполнить. Он должен находиться в стандартном модуле и содержать метод OnTime, как показано в листинге 7.3.

//Листинг 7.3 Sub MyMacro () Application.OnTime T1meValue(«15:00:00»), «MyMacro» ‘ВАШ КОД End Sub

Процедура MyMacro будет запускаться каждый день в 15:00, пока Excel остается открытым.

Теперь предположим, вы хотите выполнять MyMacro каждые 15 минут после открытия книги. И снова вы будете запускать процедуру во время открытия книги, поэтому правой кнопкой мыши щелкните значок Excel рядом с меню Файл (File), выберите команду Исходный текст (View Code) и введите код из листинга 7.4.

//Листинг 7.4 Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.OnTime dTime. «MyMacro». . False End Sub Private Sub Workbook_Open() Application.OnTime Now + TimeValue(«00:15:00»), «MyMacro» End Sub

В любом стандартном модуле (который можно открыть командой Insert → Module) введите код, приведенный в листинге 7.5.

//Листинг 7.5 Public dTime As Date Sub МуМасrо() dTime = Now + TimeValue(«00:15:00») Application.OnTime dTime, «MyMacro» ‘ВАШ КОД End Sub

Обратите внимание, что.вы передаете значение времени, равное 15 минутам, общей (public) переменной dTime. Это нужно, чтобы вы могли отменить метод OnTime в событии Workbook_BeforeC1ose, присвоив дополнительному аргументу Schedule значение Ложь (False). По умолчанию его значение равно Истина (True), поэтому, изменив значение на Ложь (False), вы приказываете Excel отменить метод OnTime, настроенный на выполнение в указанное время.

Если не передать время в переменную, Excel не будет знать, какой метод OnTime нужно отменить, так как значение Now + TimeValue(«00:15:00») не является статическим, но становится статическим, когда передается в переменную. Если вы не присвоите дополнительному аргументу Schedule значение Ложь (False), рабочая книга будет автоматически открываться каждые 15 минут, после того как вы закроете ее, и выполнять макрос MyMacro.

Vba excel время выполнения макроса

Для того, чтобы узнать сколько времени прошло пока выполнялся нужный макрос, можно использовать, например, функцию Timer

Если Вы хотите получить время именно в секундах, то используйте первый MsgBox, если в часах, минутах и секундах, то второй. Если же Вам необходимо получить количество милисекунд или существует вероятность, что Ваш макрос может быть запущен до полуночи, а обработка данных может закончиться после полуночи, то в этих случаях можно использовать следующий

Читать еще:  Excel online бесплатно

В этом уроке я покажу Вам самые популярные макросы в VBA Excel, которые вы сможете использовать для оптимизации своей работы. VBA – это язык программирования, который может использоваться для расширения возможностей MS Excel и других приложений MS Office. Это чрезвычайно полезно для пользователей MS Excel, поскольку VBA может использоваться для автоматизации вашей работы и значительно увеличить Вашу эффективность. В этой статье Вы познакомитесь с VBA и я вам покажу некоторые из наиболее полезных, готовых к использованию примеров VBA. Вы сможете использовать эти примеры для создания собственных скриптов, соответствующих Вашим потребностям.

Вам не нужен опыт программирования, чтобы воспользоваться информаций из этой статьи, но вы должны иметь базовые знания Excel. Если вы еще учитесь работать с Excel, я бы рекомендовал Вам прочитать статью 20 формул Excel, которые вам нeобходимо выучить сейчас, чтобы узнать больше о функциональных возможностях Excel.

Я подготовил для вас несколько самых полезных примеров VBA Excel с большой функциональностью, которую вы сможете использовать для оптимизации своей работы. Чтобы их использовать, вам необходимо записать их в файл. Следующий параграф посвящен установке макроса Excel. Пропустите эту часть, если вы уже знакомы с этим.

Table of Contents

Как включить макросы в Excel

В Excel нажмите комбинацию клавиш alt + F11. Это приведет вас к редактору VBA в MS Excel. Затем щелкните правой кнопкой мыши папку Microsoft Excel Objects слева и выберите Insert => Module. Это место, где сохраняются макросы. Чтобы использовать макрос, вам нужно сохранить документ Excel как макрос. Из табуляции File => Save as, выберите Save as macro-enabled Workbok (расширение .xlsm) Теперь пришло время написать свой первый макрос!

1. Копирование данных из одного файла в другой.

Очень полезный макрос, поскольку он показывает, как скопировать ряд данных изнутри vba и как создать и назвать новую книгу. Вы можете изменить этот макрос в соответствии с вашими собственными требованиями:

2. Отображение скрытых строк

Иногда большие файлы Excel можно содержать скрытые строки для большей ясности И для лучшего удобства пользователей. Вот один макрос, который отобразит все строки из активной рабочей таблицы:

3. Удаление пустых строк и столбов

Пустые строки в Excel – может быть проблемой для обработки данных. Вот как избавиться от них:

4. Нахождение пустых ячеек

13. Создание сводной таблицы

14. Отправка активного файла по электронной почте

Мой любимый код VBA. Он позволяет вам прикреплять и отправлять файл, с которым вы работаете, с предопределенным адресом электронной почты, заголовком сообщения и телом сообщения! Сначала Вам нужно сделать референцию в Excel на Microsoft Outlook (в редакторе Excel VBA, нажмите tools => references и выберите Microsoft Outlook).

15. Вставка всех графиков Excel в презентацию PowerPoint

Очень удобный макрос, который позволяет вам добавлять все ваши графики Excel в презентацию Powerpoint одним щелчком мыши:

16. Вставка таблицы Excel в MS Word

Таблицы Excel обычно помещаются внутри текстовых документов. Вот один автоматический способ экспорта таблицы Excel в MS Word:

17. Извлечение слов из текста

Мы можем использовать формулы, если хотим извлечь определенное количество символов. Но что, если мы хотим извлечь только одно слово из предложения или диапазон слов в ячейке? Для этого мы можем сами создать функцию Excel с помощью VBA. Это одна из самых удобных функций VBA, поскольку она позволяет создавать собственные формулы, которые отсутствуют в MS Excel. Давайте продолжим и создадим две функции: findword() и findwordrev():

Отлично, мы уже создали две новые функции в Excel! Теперь попробуйте использовать их в Excel. Функция = FindWordRev (A1,1) берет последнее слово из ячейки A1. Функция = FindWord (A1,3) берет третье слово из ячейки A1 и т. Д.

18. Защита данных в MS Excel

Иногда мы хотим защитить данных нашего файла, чтобы только мы могли его изменять. Вот как это сделать с VBA:

Поздравления! Поскольку вы все еще читаете это, вы действительно заинтересованы в изучении VBA. Как вы уже сами видели, язык программирования VBA чрезвычайно полезен и может сэкономить нам много времени. Надеюсь, вы нашли эту информацию полезной и использовали ее, чтобы стать мастером MS Excel, VBA и компьютерных наук в целом.

Предисловие

Перед началом работы

Перед тем, как перейти прямо к сути, я хотел бы обратить внимание на пост: Несколько советов по работе с VBA в Excel. В частности, в блоке “Ускорение работы макросов” есть полезные примеры кода, которые стоит использовать вместе с моими советами по ускорению работы, для достижения максимального результата.

Ускоряем работу макроса

Итак, к сути… Для того что бы реально ускорить работу VBA в Ecxel нужно понимать, что обращение к ячейке на листе — занимает значительно время. Если Вы хотите записать в ячейку одно значение, то это не займет значительного времени, но если Вам потребуется записать(прочитать, обратиться) к тысячам ячеек, то это потребует гораздо большего времени. Что же делать в таких случаях? На помощь приходят массивы. Массивы хранятся в памяти, а операции в памяти VBA выполняет в сотни, а то и в тысячи раз быстрее. Поэтому, если у Вас в данных тысячи, сотни тысяч значений, то время выполнения макроса может занимать от нескольких минут до нескольких часов, а если эти данные перенести в массив, то выполнение макроса может сократиться до нескольких секунд (минут).

Я наведу пример кода и в комментариях объясню что к чему, так будет яснее. К тому же, могут пригодиться некоторые строки кода, не относящееся прямо к процессу ускорения.

Пример

Предположим, что у нас есть данные на “Лист1” (“Sheet1”). Данные содержаться в 50 колонках (колонки содержат названия) и 10 000 строк. К примеру, нам нужно в последнюю колонку внести значение, которое равно значению во второй колонке, деленное на значение в третьей колонке (начиная со 2-й строки, так как первая содержит заглавие). Потом мы возьмем первые 10 колонок и скопируем их на “Лист2” (“Sheet2”), для дальнейшей обработки (для других потребностей). Пусть пример и банальный, но, как мне кажется, он может отобразить всю суть данного поста.

В данном примере массив заполняется указанным диапазоном. Если у нас будет явно заданный двумерный массив, то скопировать его значение на лист можно таким образом:

Заключение

Большинство операций над данными можно выполнять в массиве, при этом, отображать на лист только результат. Иногда целесообразным бывает показать результат на лист, потом выполнить некоторые действия (например, сортировку) и снова загрузить данные в массив.

Для меня было большой неожиданностью ускорения работы макроса за счет массивов, так как данные на листах, на самом деле, итак представляют собой двумерный массив. Но, оказывается, обращение к памяти происходит гораздо быстрей, чем к ячейкам на листе.

Читать еще:  Pi в excel

В дальнейшем я планирую написать советы (примеры) по быстрому поиску данных на листе, но это уже будет другой пост. Если будут вопросы, комментарии, пожалуйста, пишите.

Автоматизация задач с помощью средства записи макросов — Excel

Для автоматизации повторяющихся задач в Microsoft Excel можно быстро записать макрос. Предположим, у вас есть даты в различном формате и вы хотите применить ко всем из них один формат. Это можно сделать с помощью макроса. Вы можете записать макрос, который применяет нужный формат, а затем запускать его при необходимости.

При записи макроса записываются все действия, описанные в Visual Basic для приложений (VBA) коде. Эти действия могут включать ввод текста или чисел, нажатие ячеек или команд на ленте или в меню, форматирование ячеек, строк или столбцов, а также импорт данных из внешнего источника, например Microsoft Access. Приложение Visual Basic (VBA) — это подмножество мощного языка программирования Visual Basic, которое входит в большинство приложений Office. Несмотря на то, что VBA обеспечивает возможность автоматизации процессов между приложениями Office, вам не нужно знать код VBA или программное программирование, если это нужно.

Важно знать, что при записи макроса регистрируются почти все ваши действия. Поэтому если вы допустите ошибку, например нажмете не ту кнопку, средство записи макросов зарегистрирует это действие. В таком случае можно снова записать всю последовательность или изменить код VBA. Поэтому перед записью процесса следует хорошо проработать его. Чем точнее вы запишете последовательность, тем более эффективно будет работать макрос.

Макросы и средства VBA находятся на вкладке Разработчик, которая по умолчанию скрыта, поэтому сначала нужно включить ее. Дополнительные сведения см. в статье Отображение вкладки «Разработчик».

Запись макроса

Перед записью макросов полезно знать следующее:

Макрос, записанный для работы с диапазоном Excel, будет выполняться только для ячеек этого диапазона. Поэтому если вы добавите в диапазон новую строку, макрос не будет применяться к ней.

Если вам нужно записать длинную последовательность задач, советуем вместо этого использовать несколько более мелких макросов.

В макросе могут содержаться и задачи, не относящиеся к Excel. Процесс макроса может охватывать прочие приложения Office и другие программы, которые поддерживают Visual Basic для приложений (VBA). Например, вы можете записать макрос, который сначала обновляет таблицу в Excel, а затем открывает Outlook для ее отправки по электронной почте.

Чтобы записать макрос, следуйте инструкциям ниже.

На вкладке Разработчик в группе Код нажмите кнопку Запись макроса.

В поле Имя макроса укажите имя макроса. Сделайте имя понятным, чтобы можно было быстро найти нужный макрос.

Примечание: Первым символом имени макроса должна быть буква. Последующие символы могут быть буквами, цифрами или знаками подчеркивания. В имени макроса не должно содержаться пробелов; в качестве разделителей слов следует использовать знаки подчеркивания. Если используется имя макроса, являющееся ссылкой на ячейку, может появиться сообщение об ошибке, указывающее на недопустимое имя макроса..

Чтобы назначить сочетание клавиш для запуска макроса, в поле Сочетание клавиш введите любую строчную или прописную букву. Рекомендуется использовать сочетания клавиш с CTRL+SHIFT, так как они будут заменять собой совпадающие с ними стандартные сочетания клавиш в Excel, пока открыта книга, содержащая макрос. Например, если назначить сочетание клавиш CTRL+Z (Отменить), вы не сможете использовать его для функции «Отменить» в данном экземпляре Excel.

В списке Сохранить в выберите книгу, в которой вы хотите сохранить макрос.

Как правило, макрос сохраняется в указанном расположении книги , но если вы хотите, чтобы макрос был доступен при использовании Excel, выберите пункт Личная книга макросов . Если выбрать команду Личная книга макросов, Excel создаст скрытую личную книгу макросов (личное. xlsb), если она еще не существует, и сохранит макрос в этой книге.

В поле Описание при необходимости введите краткое описание действий макроса.

Хотя поле «Описание» является необязательным, рекомендуется его заполнить. Кроме того, желательно ввести понятное описание, которое будет полезно вам и всем, кто запускает макрос. Если у вас много макросов, описания помогут быстро определить, для чего они нужны.

Чтобы начать запись макроса, нажмите кнопку ОК.

Выполните действия, которые нужно записать.

На вкладке разработчик в группе код нажмите кнопку остановить запись .

Работа с макросами, записанными в Excel

На вкладке Разработчик щелкните Макросы, чтобы просмотреть макросы, связанные с книгой. Кроме того, можно нажать клавиши ALT+F8. При этом откроется диалоговое окно Макрос.

Внимание: Макросы нельзя отменить. Прежде чем впервые запускать записанный макрос, сохраните книгу или создайте ее копию, чтобы предотвратить внесение нежелательных изменений. Если вас не устраивают результаты выполнения макроса, вы можете закрыть книгу, не сохраняя ее.

Ниже приведены дополнительные сведения о работе с макросами в Excel.

Сведения о параметрах безопасности макросов и их значении.

Макросы можно запускать различными способами, например с помощью сочетания клавиш, графического объекта, панели быстрого доступа, кнопки или даже при открытии книги.

С помощью редактора Visual Basic можно изменять макросы, присоединенные к книге.

Если книга содержит макрос VBA, который нужно использовать где-либо еще, этот модуль можно скопировать в другую книгу с помощью редактора Microsoft Visual Basic.

Назначение макроса объекту, фигуре или графическому элементу

На листе щелкните правой кнопкой мыши объект, рисунок, фигуру или элемент, которому нужно назначить существующий макрос, а затем выберите команду назначить макрос.

В поле Назначить макроса выберите макрос, который вы хотите назначить.

Вы можете назначить макрос значку и добавить его на панель быстрого доступа или ленту.

Вы можете назначать макросы формам и элементам ActiveX на листе.

Узнайте, как включать и отключать макросы в файлах Office.

Открытие редактора Visual Basic

Нажмите клавиши ALT+F11.

Узнайте, как найти справку по элементам Visual Basic.

Работа с записанным кодом в редакторе Visual Basic (VBE)

С помощью редактора Visual Basic (VBE) вы можете добавлять в записанный код собственные переменные, управляющие структуры и другие элементы, которые не поддерживает средство записи макросов. Так как средство записи макросов фиксирует почти каждый шаг, выполняемый во время записи, может также потребоваться удалить ненужный код. Просмотр записанного кода — отличный способ научиться программировать на VBA или отточить свои навыки.

Пример изменения записанного кода можно найти в статье Начало работы с VBA в Excel.

Запись макроса

Перед записью макросов полезно знать следующее:

Макрос, записанный для работы с диапазоном Excel, будет выполняться только для ячеек этого диапазона. Поэтому если вы добавите в диапазон новую строку, макрос не будет применяться к ней.

Если вам нужно записать длинную последовательность задач, советуем вместо этого использовать несколько более мелких макросов.

В макросе могут содержаться и задачи, не относящиеся к Excel. Процесс макроса может охватывать прочие приложения Office и другие программы, которые поддерживают Visual Basic для приложений (VBA). Например, вы можете записать макрос, который сначала обновляет таблицу в Excel, а затем открывает Outlook для ее отправки по электронной почте.

Читать еще:  Значение e в excel

Макросы и средства VBA находятся на вкладке Разработчик, которая по умолчанию скрыта, поэтому сначала нужно включить ее.

Перейдите в раздел настройки > Excel. Панель инструментов & > ленты.

В категории Настроить ленту в списке Основные вкладки установите флажок Разработчик, а затем нажмите кнопку Сохранить.

Чтобы записать макрос, следуйте инструкциям ниже.

На вкладке Разработчик нажмите кнопку Запись макроса.

В поле Имя макроса введите название макроса. Сделайте имя понятным, чтобы можно было быстро найти нужный макрос.

Примечание: Первым символом имени макроса должна быть буква. Последующие символы могут быть буквами, цифрами или знаками подчеркивания. В имени макроса не должно содержаться пробелов; в качестве разделителей слов следует использовать знаки подчеркивания. Если используется имя макроса, являющееся ссылкой на ячейку, может появиться сообщение об ошибке, указывающее на недопустимое имя макроса..

В списке Сохранить в выберите книгу, в которой вы хотите сохранить макрос.

Как правило, макрос сохраняется в указанном расположении книги , но если вы хотите, чтобы макрос был доступен при использовании Excel, выберите пункт Личная книга макросов. Если выбрать команду Личная книга макросов, в Excel будет создана скрытая личная книга макросов (личное. XLSB), если он еще не существует, и сохранение макроса в этой книге. Книги в этой папке открываются автоматически при запуске Excel, а код, хранящийся в личной книге макросов, будет указан в диалоговом окне Макрос, которое описано в следующем разделе.

Чтобы назначить сочетание клавиш для запуска макроса, в поле Сочетание клавиш введите любую строчную или прописную букву. Рекомендуется использовать сочетания клавиш, которые еще не назначены другим командам, так как они будут переопределять совпадающие с ними стандартные сочетания клавиш в Excel, пока открыта книга, содержащая макрос.

В поле Описание при необходимости введите краткое описание действий макроса.

Хотя поле «Описание» является необязательным, рекомендуется его заполнить. Полезно ввести понятное описание с любой полезной информацией, которая может быть полезна Вам или другим пользователям, которые будут запускать макрос. Если у вас много макросов, описания помогут быстро определить, для чего они нужны.

Чтобы начать запись макроса, нажмите кнопку ОК.

Выполните действия, которые нужно записать.

На вкладке Разработчик щелкните Остановить запись.

Работа с макросами, записанными в Excel

На вкладке Разработчик щелкните Макросы, чтобы просмотреть макросы, связанные с книгой. При этом откроется диалоговое окно Макрос.

Примечание: Макросы нельзя отменить. Прежде чем впервые запускать записанный макрос, сохраните книгу или создайте ее копию, чтобы предотвратить внесение нежелательных изменений. Если вас не устраивают результаты выполнения макроса, вы можете закрыть книгу, не сохраняя ее.

Ниже приведены дополнительные сведения о работе с макросами в Excel.

VBA-Показывать Индикатор Выполнения Во Время Выполнения Макроса

У меня есть макрос, который открывает xlsx-файлы в папке по одному и копирует их листы в определенный файл. Иногда выполнение этого макроса занимает довольно много времени, и я хотел бы добавить индикатор выполнения, чтобы показать пользователю, как далеко находится макрос.

Я нашел несколько руководств, которые показывают, как это сделать, и протестировал их в образцах рабочих книг. Теперь я пытаюсь интегрировать направляющие с моим макросом, но у меня нет никакого успеха.

Вот мой код (для копирования листов) :

Вот ссылка на руководство по использованию формы в качестве индикатора выполнения:

Вот основная разбивка этого руководства:

1) Вставьте форму и сделайте так, чтобы она выглядела следующим образом:

Добавлена рамка (переименованная в FrameProgress) внутри формы и метка (переименованная в LabelProgress) внутри рамки

2) щелкните правой кнопкой мыши на форме и выберите пункт Просмотр кода

3) внутри окна добавьте этот код:

4) вставьте модуль и добавьте этот код:

5) вставьте модуль и добавьте этот код:

6) запустите модуль «ShowDialog», и он заполнит данные из ячейки A1-ячейки Y100 и отобразит индикатор выполнения при этом — это работает 100%

Я заметил, что в приведенном выше коде есть счетчик, и этот счетчик используется для деления на количество строк и столбцов в сочетании, чтобы получить процент, поэтому я получил приведенный ниже код для подсчета файлов в папке, чтобы у меня было значение счетчика — и после того, как каждый файл будет закрыт, вторая переменная count увеличится на 1.

Вот где я получил код для счетчика:

Теперь вот где и/как я пытался «combine» мой код с помощью руководства:

1) Вот как выглядит код в моей форме:

2) Вот как выглядела моя субмарина:

У меня есть много macros, и было бы фантастично использовать его с теми, которые требуют много времени для выполнения, поэтому я надеюсь, что если я получу его для работы с одним, я смогу использовать его со всеми.

2 Ответа

Надеюсь, это поможет ..

Редактировать : я переехал за пределами каждой линии :

Используя пример для индикатора выполнения, который я привел в этом посте .

Обратите внимание на параметр явный В самом верху модуля. Я не могу достаточно подчеркнуть, насколько это важно. Он заставляет вас объявлять каждую переменную перед ее использованием.

Вы можете изменить UpdateProgressBar lCurrentCount, lFinalCount на UpdateProgressBar lCurrentCount, lFinalCount, Src_Book.Name , чтобы индикатор выполнения также отображал название открываемой книги.

Похожие вопросы:

Я создаю приложение, которое записывает аудио. Если он записывается в течение длительного времени, то ему требуется несколько минут, чтобы написать заголовок для него (wave file). Я хочу показать.

Лист Excel не отвечает во время выполнения макроса, после запуска макроса он возвращается на лист с ответами.

после долгих поисков я не смог найти никого с такой же проблемой, как у меня. Так может ли кто-нибудь из гуру помочь мне с моим макросом Excel? Мой макрос выполняет следующие действия: Откройте.

Я использую приведенный ниже код для обновления моего индикатора выполнения. ProgressBar.Visible = true; ProgressBar.Minimum = 1; ProgressBar.Maximum = PortCount; ProgressBar.Value = 1;.

У меня есть простая форма с кнопкой и индикатором выполнения. Пользователь нажимает кнопку, чтобы начать обработку, и индикатор выполнения анимируется во время выполнения кода. В данном случае это.

Во время выполнения макроса я читаю несколько файлов excel и создаю новый файл excel, я создаю аналогичный лист: Во время выполнения по VBA я хочу установить эту область и создать таблицу, добавить.

Это макрос, который работает со всеми файлами моей книги и выполняет перенос макроса на всех листах, если лист виден. Я хотел показать индикатор выполнения, чтобы показать прогресс во время.

Я хочу показать индикатор выполнения, показывающий процент завершения, пока мое приложение загружает некоторые большие файлы через интернет. что-то вроде этого:

Вот в чем проблема: Я хочу показать индикатор выполнения (так же, как текст, например оставшийся 35%. ) во время выполнения функции C++. Я сделал первую часть, которая является индикатором.

Во время выполнения пользовательского действия в установщике отсутствует индикатор выполнения. Мы используем немедленное пользовательское действие C# управление кодом. Есть ли другие способы.

Ссылка на основную публикацию
Adblock
detector