Remkomplekty.ru

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

Vba excel обновить форму

Обновление данных в формах и элементах управления

Последняя группа макрокоманд в рассматриваемой категории связана с обновлением данных в активных формах, таблицах и запросах. Если несколько человек в сети одновременно изменяют данные, то формы и таблицы у конкретного пользователя могут не отражать актуальных данных. Для того чтобы отображаемые данные соответствовали текущему состоянию базы данных, их необходимо обновить с помощью команды Записи, Обновить (Record, Refresh) (см. разд.Работа с записями гл. 2).

Похожая ситуация возникает даже в однопользовательском режиме, если в форме используется поле со списком, источником данных для которого является таблица или запрос. Если в исходную таблицу были добавлены записи, то в поле со списком они автоматически не появятся — нужно повторно выполнить запрос. Кроме полей со списком, к элементам управления, требующим обновления отображаемых данных, относятся также списки и элементы управления подчиненной формы, объекты OLE и вычисляемые элементы управления, содержащие статистические функции по подмножеству записей, такие как DLookUp () или DSum ().

Для того чтобы выполнить обновление записей в формах, таблицах или элементах управления, используются макрокоманды Обновление(Requery), ПоказатьВсеЗаписи(ShowAllRecords) И ОбновитьОбъект(RepaintObject).

Макрокоманда Обновление (Requery) обновляет данные в объекте базы данных путем повторного просмотра источника данных. Макрокоманда имеет один аргумент, содержащий имя объекта, который следует обновить. Если обновляется активный объект, например форма, то поле аргумента следует оставить пустым. При этом макрокоманда будет повторно выполнять запрос, указанный в свойстве Источник данных (RecordSource) этой формы.

Рассмотрим пример использования макроса для обновления данных. В форме «Клиенты» (Customers) есть поле со списком «Страна» (Country). Источником данных для этого поля является запрос, который выбирает значения из поля «Страна» (Country) таблицы «Клиенты» (Customers):

Если при вводе клиента в таблицу добавляется новое название страны, то в списке эта страна не появится, поскольку запрос будет выполнен повторно только при следующем открытии формы. Чтобы провести обновление списка стран раньше, следует назначить событию После обновления (After Update) формы макрос Клиенты.Обновление списка стран, который состоит из одной макрокоманды Обновление (Requery) со значением аргумента «Страна» (Country) (рис. 11.18).

Рис. 11.18. Назначение макроса событию формы После обновления

Замечание

Макрокоманда Обновление (Requery) обновляет только один объект, поэтому если в форме существуют элементы управления, требующие обновления отображаемых данных, и в макросе, назначенном этой форме, используется макрокоманда Обновление (Requery) с пустым значением аргумента, то обновляться будут только записи в форме. Для каждого такого элемента управления нужно использовать отдельную макрокоманду. Если эта макрокоманда в качестве аргумента содержит имя элемента управления, то при ее выполнении обновляется только данный элемент. Записи в самой форме не обновляются.

С помощью макрокоманды Обновление (Requery) можно обновлять данные и в неактивной форме, точнее, не в той форме, которой назначен макрос. Однако в этом случае сначала необходимо выполнить макрокоманду ВыделитьОбъект(SelectObject), которая перенесет фокус на нужную форму, чтобы ее активизировать (потом фокус можно вернуть обратно).

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

Макрокоманда ОбновитьОбъект (RepaintObject) применяется только к объекту базы данных (к таблице, запросу, форме, отчету, странице, макросу и модулю) и не применяется к элементу управления. Она выполняет немедленное обновление указанного открытого объекта (если имя объекта не задано, обновляется активный объект), хотя при этом не производится повторное выполнение запроса к источнику данных. Обновление объекта не влияет на. отображение новых и удаленных записей, как это происходит при выполнении макрокоманды Обновление (Requery). Обычно макрокоманду ОбновитьОбъект (RepaintObject) применяют для отображения результатов изменения данных с помощью макрокоманд ЗадатьЗначение (SetValue), а также для повторного вычисления значений выражений в вычисляемых элементах управления.

Установка и обновление надстройки VBA-Excel

Системные требования

Перед установкой убедитесь, что компьютер соответствует следующим минимальным требованиям

Макросы должны быть включены.

Некоторые функции (КУРС, ПЕРЕВОД, СКЛОНЕНИЕ) требуют наличия интернета.

Установка

  1. Скачайте установочный файл программы, сохранив его в любое удобное место.
  2. Откройте скачанный файл Excel.
  3. Если файл Excel открылся в режиме защищенного просмотра, то разрешите редактирование файла, нажав кнопку Разрешить редактирование под вкладками меню.

  1. Если макросы в Excel не были включены отобразится инструкция (лист Как установить макросы), которая поможет их включить. С инструкцией по включению макросов можно также ознакомиться на этой странице.
  2. Нажмите кнопку Установить / обновить, программа автоматически установится.
Читать еще:  Вырезать песню из видео онлайн

Обновление

Проверка обновлений выполняется автоматически раз в сутки (при открытии Excel). Вы также можете проверить наличие обновлений вручную выполнив команду Вкладка VBA-Excel -> Справка -> Проверить обновления.

При наличие обновления программа предложит обновиться

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

Нажмите Обновить, программа скачает и откроет новую версию программы.

Ручная установка / обновление надстройки

В 90% случаях процесс установки и обновления автоматический. Иногда сторонние программы блокируют процесс установки. В этих случаях можно установить/обновить программу вручную. Для этого:

  1. Если установка не проводилась пропустите первые 3 пункта. Откройте параметры Excel.

  1. Перейдите в список надстроек.

  1. Отключите надстройку VBA-Excel сняв с нее выбор и нажав ОК.

  1. Скачайте и откройте актуальную версию программы.
  2. Откройте меню Файл и выберите пункт Сохранить как (можно также воспользоваться сочетанием клавиш Ctrl + Shift + S).
  3. Выберите тип файла Надстройка Excel (*.xlam)

Принудительное обновление экрана в Excel VBA

мой инструмент Excel выполняет длинную задачу, и я пытаюсь быть добрым к пользователю, предоставляя отчет о ходе работы в строке состояния или в некоторой ячейке на листе, как показано ниже. Но экран не обновляется или перестает обновляться в какой-то момент (например, 33%). Задача в конечном итоге завершается, но индикатор выполнения бесполезен.

что я могу сделать, чтобы принудительно обновить экран?

Я использую Excel 2003.

6 ответов

добавить функция doevents функция внутри цикла, см. ниже.

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

текстовые поля в листах иногда не обновляются когда изменяется их текст или форматирование, и даже команда DoEvent не помогает.

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

следующие команды, кажется, сделать трюк:

вызовите DoEvents в петле.

это повлияет на производительность, поэтому вы можете вызвать его только на каждой, скажем, 10-й итерации.
Однако, если у вас есть только 30, это не проблема.

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

и положить этому конец

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

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

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

в коде UserForm это так же просто, как:

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

5.2 Создание форм и самые важные свойства и методы форм

Создание форм VBA, свойства форм, методы Show(), Hide(), команда Unload, событие Initialize()

Создать форму очень просто: для этого достаточно в редакторе Visual Basic щелкнуть правой кнопкой мыши по проекту (то есть документу) в окне Project Explorer и в контекстном меню выбрать Insert -> User Form. Откроется окно дизайнера форм (Form designer), в котором будет представлено пустое серое окно формы (по умолчанию она будет называться UserForm1) и рядом — Toolbox, панель с набором элементов управления (см. рис. 5.1).

Рис. 5.1 Все готово для работы с формой

Читать еще:  Абсолютная адресация ячеек в excel

Если у вас включен показ окна свойств (он включается по клавише ), то в этом окне будут представлены свойства формы. Переход на код для этой формы (по умолчанию открывается событие Click) — по клавише , возврат обратно в окно дизайнера форм — по + .

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

Некоторые самые важные свойства форм (кроме ShowModal, все они применимы и для других элементов управления):

  • свойство (Name) — определяет имя формы. Пользователь, скорее всего, его никогда не узнает. Имя формы используется только программистом в программном коде для этой формы (и в окнах редактора Visual Basic). После создания формы ее имя, предлагаемое по умолчанию (UserForm) рекомендуется заменить на что-либо более значимое, чтобы было проще ориентироваться в программе (это относится ко всем элементам управления);
  • свойство Caption — определяет заголовок формы (по умолчанию совпадает с именем формы). Рекомендуется ввести строку, которая будет напоминать пользователю о назначении формы (например, «Выбор типа отчета»);
  • свойство Enabled — если установлено в False, пользователь работать с формой не сможет. Используется для временного отключения формы, например, пока пользователь не обеспечит какие-то условия для ее работы;
  • свойство ShowModal — если установлено в True (по умолчанию), пользователь не может перейти к другим формам или вернуться в документ, пока не закроет эту форму. В версиях до VBA6 поддерживались только модальные формы.

Большая часть основных свойств относится к внешнему виду, размерам и местонахождению окон.

Самые важные методы форм:

В процессе редактирования формы (из окна редактора Visual Basic) форму можно запускать по нажатию клавиши . После того, как форма будет готова, вы должны обеспечить запуск этой формы в документе. Для запуска формы нужно воспользоваться методом Show():

Если форма уже была загружена в память, она просто станет видимой, если еще нет — то будет автоматически загружена (произойдет событие Load).

Саму эту команду, можно вызвать, например:

  • из обычного макроса, привязанного к кнопке или клавиатурной комбинации;
  • из автозапускаемого макроса (макроса с названием AutoExec для Word);
  • из кода для элемента управления, расположенного в самом документе (например, CommandButton) или на другой форме — для перехода между формами;
  • поместить ее в обработчик события Open для документа Word или книги Excel, чтобы форма открывалась автоматически при открытии документа.

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

спрятать форму (использовать метод Hide()), например:

форма будет убрана с экрана, но останется в памяти. Потом при помощи метода Show() можно будет опять ее вызвать в том же состоянии, в каком она была на момент «прятанья», а, можно, например, пока она спрятана, программно изменять ее и расположенные на ней элементы управления. Окончательно форма удалится из памяти при закрытии документа;

если форма больше точно не потребуется, можно ее удалить из памяти при помощи команды Unload:

Остальные методы относятся либо к обмену данными через буфер обмена (Copy(), Cut(), Paste()), либо к служебным возможностям формы ( PrintForm(), Repaint(), Scroll()).

Важнейшая концепция VBA — события. Событие (event) — это что-то, что происходит с программой и может быть ей распознано. Например, к событиям относятся щелчки мышью, нажатия на клавиши, открытие и закрытие форм, перемещение формы по экрану и т.п. VBA построен таким образом, чтобы создавать на нем программы, управляемые событиями (event-driven). Такие программы противопоставляются устаревшему процедурному программированию.

Самые важные события форм:

  • Initialize — происходит при подготовке формы к открытию (появлению перед пользователем). Обычно в обработчик для этого события помещается код, связанный с открытием соединений базы данных, настройкой элементов управления на форме, присвоение им значений по умолчанию и т.п.
  • Click (это событие выбирается по умолчанию) и DblClick — реакция на одиночный и двойной щелчок мыши соответственно. Для формы это событие используется не так часто. Обычно обработчик щелчков используется для кнопок (элементов управления CommandButton). По причине простоты мы использовали это событие для демонстрации нашего кода.
  • Error — это событие используется при возникновении ошибки в форме, используется как возможность предоставить пользователю исправить сделанную им ошибку. Подробнее — в специальном модуле, посвященном ошибкам и отладке.
  • Terminate — событие используется при нормальном завершении работы формы и выгрузке ее из памяти (например, по команде Unload). Обычно используется для разрыва открытых соединений с базой данных, освобождения ресурсов, протоколирования и т.п. Если работа формы завершается аварийно (например, запустившее форму приложение выдало команду End), то это событие не возникает.
  • остальные события связаны либо с изменением размера окон, либо с нажатиями клавиш, либо с активизацией (получением фокуса)/деактивизацией (потерей фокуса).
Читать еще:  Int vba excel

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

Некоторые моменты, связанные с созданием и редактированием форм:

  • Формы, создаваемые в Microsoft Access, не являются стандартными, как формы остальных приложений Office, и набор свойств и методов у них несколько отличается. Тем не менее по функциональности они практически одинаковы.
  • Иногда для обсуждений формы удобно распечатать. Для этого предусмотрено специальное диалоговое окно, которое можно вызвать по нажатию кнопки +

(при выбранной форме в дизайнере).

  • Если все нужные вам элементы управления трудно уместить на одной форме (даже большого размера), в вашем распоряжении два варианта: воспользоваться двумя формами (переходя между ними при помощи методов Show() и Hide(), подвязанных к элементам управления) или воспользоваться несколькими вкладками для формы. Для этой цели в вашем распоряжении — специальный элемент управления Multipage.
  • Обновление всех сводных таблиц в моей книге excel с помощью макроса

    У меня есть книга с 20 различными сводными таблицами. Есть ли простой способ найти все сводные таблицы и обновить их в VBA?

    10 ответов:

    или, если ваша версия Excel достаточно старый,

    этот код VBA обновит все сводные таблицы / диаграммы в книге.

    другой непрограммный вариант:

    • щелкните правой кнопкой мыши на каждой сводной таблице
    • выберите параметры таблицы
    • ТИК ‘открыть’.
    • нажмите на кнопку OK

    это будет обновлять сводную таблицу при каждом открытии книги.

    ActiveWorkbook.RefreshAll обновляет все, не только сводные таблицы, но и запросы ODBC. У меня есть несколько запросов VBA, которые ссылаются на подключения к данным, и с помощью этой опции происходит сбой, поскольку команда запускает подключения к данным без подробностей, предоставленных из VBA

    Я рекомендую этот вариант, если вы хотите обновить только пивоты

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

    разница? Когда вы создаете новую сводную таблицу, вас спрашивают, Хотите ли вы ее использовать на основе предыдущей таблицы. Если вы скажете «нет», эта сводная таблица получит свой собственный кэш и удвоит размер исходных данных. Если вы скажете «Да», вы сохраните свой Книга небольшая, но вы добавляете в коллекцию сводных таблиц, которые совместно используют один кэш. Вся коллекция обновляется при обновлении любой сводной таблицы в этой коллекции. Таким образом, вы можете представить, какая разница может быть между обновлением каждого кэша в книге по сравнению с обновлением каждой сводной таблицы в книге.

    в панели инструментов сводной таблицы есть опция обновить все. Этого достаточно. Больше ничего не надо делать.

    у вас сводные таблицы коллекция на VB лист «объект». Итак, быстрый цикл, как это будет работать:

    Записки из окопов:

    1. не забудьте снять защиту с любых защищенных листов перед обновлением сводной таблицы.
    2. сохранить часто.
    3. Я подумаю о большем и обновлю в свое время. 🙂

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

    даже мы можем обновить конкретное соединение и в свою очередь он обновит все шарниры, связанные с ним.

    для этого кода я создал срез из таблицы, присутствующей в Excel:

    Я использую команду, указанную ниже, в недавнем прошлом, и она, кажется, работает нормально.

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

    Если вы используете MS Excel 2003, то перейдите в меню Вид — > панель инструментов — > сводная таблица из этой панели инструментов мы можем сделать обновление, нажав кнопку ! этот символ.

    Ссылка на основную публикацию
    ВсеИнструменты
    Adblock
    detector
    ×
    ×