Обновление формы vba excel

Перезаггрузка userform без выхода из неё

benza89

Дата: Среда, 12.04.2017, 04:45 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 34


Репутация:

0

±

Замечаний:
20% ±


Excel 2003

Все здравствуйте, можно ли обновить userform без выхода из неё, как бы перерасчёт данных в userfor?
Сейчас, чтобы использую закрыть и сразу же открыть форму, чтобы данные обновились.

 

Ответить

nilem

Дата: Среда, 12.04.2017, 06:34 |
Сообщение № 2

Группа: Авторы

Ранг: Старожил

Сообщений: 1612


Репутация:

563

±

Замечаний:
0% ±


Excel 2013, 2016

попробуйте
[vba][/vba]


Яндекс.Деньги 4100159601573

 

Ответить

benza89

Дата: Среда, 12.04.2017, 20:08 |
Сообщение № 3

Группа: Пользователи

Ранг: Новичок

Сообщений: 34


Репутация:

0

±

Замечаний:
20% ±


Excel 2003

nilem, спасибо, не знала, что такое есть.

 

Ответить

 

Асааа

Пользователь

Сообщений: 36
Регистрация: 17.09.2017

Добрый вечер. Маленькое отступление. Хочу поблагодарить всех Форумчан, которые отвечали на мои вопросы. Я понимаю, что вас немного подза****(надоел). Но прошу понять. Вообщем, суть вопроса… Есть форма, на которой набросан некий макет. Кнопка «Изменить», «Добавить», «Обновить», и список. Когда я ввожу в список любое слово, и жму «Добавить», то это слово отправляется в таблицу, но это новое слово не отображается в списке формы. Пока я не перезапущу программу. Для этого я создал кнопку «Обновить», чтобы не надо было перезапускать программу. Использовал команду: «Me.Repaint» — но не совсем уверен, что я правильно сделал. Потому что, он обновляет форму, но в списках новое слово не появляется. Вообщем всё… Спасибо. Всех люблю. Спокойной ночи. Форумчане.

0 / 0 / 0

Регистрация: 08.08.2007

Сообщений: 32

1

28.07.2009, 01:23. Показов 35652. Ответов 5


Студворк — интернет-сервис помощи студентам

Заранее спасибо!



0



4 / 4 / 1

Регистрация: 25.07.2009

Сообщений: 43

28.07.2009, 08:32

2

Если код внутри самой формы, то:

Me.Form.Repaint

Если код извне:

Form_НазваниеТвоейФормы.Repaint



1



papirus

28.07.2009, 10:04

3

Если вопрос не о перерисовке формы, а об обновлении набора записей, то Me.Requery

5 / 5 / 0

Регистрация: 02.10.2009

Сообщений: 17

02.10.2009, 02:03

4

Я люблю писать одновременно
Me.requery
Me.refresh



5



ibrahimveg

2 / 1 / 2

Регистрация: 26.08.2015

Сообщений: 96

16.05.2020, 23:22

5

Visual Basic
1
2
3
4
Private Sub Код_ФЛилиЮЛ_Change()
        Me.Requery
'        Me.Refresh
End Sub

при обновлении перескакивает на первое значение формы. Есть ли вариант обновиться без смены позиции на начальную?



0



mobile

Эксперт MS Access

26777 / 14456 / 3192

Регистрация: 28.04.2012

Сообщений: 15,782

16.05.2020, 23:34

6

Цитата
Сообщение от ibrahimveg
Посмотреть сообщение

при обновлении перескакивает на первое значение формы. Есть ли вариант обновиться без смены позиции на начальную?

Предположим в форме есть уникальное поле, назовем его для определенности ID. Тогда перед обновлением надо запомнить значение текущего ID, а после реквери его найти

Visual Basic
1
2
3
4
5
6
7
Private Sub Код_ФЛилиЮЛ_Change()
    Dim N
    N=Me.ID                          'Запоминаем значение уникального поля
    Me.Requery 
    Me.recordset.findfirst "ID=" & N 'Находим запись в рекордсете формы по значению ID
'     Me.Refresh
End Sub

Добавлено через 1 минуту
Код дан в предположении, что уникальное поле числового типа



2



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

16.05.2020, 23:34

Помогаю со студенческими работами здесь

Как обновить таблицу не закрывая форму?
Подскажите, как обновить, не закрывая форму, таблицу (обычная таблица, непрограммируемая). Когда…

Как обновить dataGridView не закрывая форму?
Здравствуйте! Если кто сталкивался с этим, подскажите, как обновить dataGridView не закрывая форму….

Как обновить подчиненную форму посредством макроса?
Как обновить подчиненную форму через макрос? В Access разбираюсь слабо. Кнопку сделать и навесить…

Как обновить форму без перемещения скрола?
Вопрос.
1. Как сделать, чтобы при обновлении формы не было заметно перемещение скрола?
По сути:…

Как обновить Подч.Форму, по значению из поля-со-списком
Access:
Есть Форма:"Клиенты и организации"
в ней Вкладка:"Клиенты",а в ней Подчиненная…

Как обновить форму и где лучше хранить List<PartClass> ?
Здравствуйте,

у меня есть List&lt;*мойкласс*&gt; и его мне надо отображать на DataGrid, я его…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

6

Содержание

  1. Метод Form.Refresh (Access)
  2. Синтаксис
  3. Возвращаемое значение
  4. Примечания
  5. Пример
  6. Поддержка и обратная связь
  7. Событие Form.AfterUpdate (Access)
  8. Синтаксис
  9. Замечания
  10. Поддержка и обратная связь
  11. Заставить обновление экрана в Excel VBA
  12. ОТВЕТЫ
  13. Ответ 1
  14. Ответ 2
  15. Ответ 3
  16. Ответ 4
  17. Ответ 5
  18. Ответ 6
  19. Vba excel обновление формы
  20. Принудительное обновление экрана в Excel VBA
  21. 6 ответов

Метод Form.Refresh (Access)

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

Синтаксис

выражение.Refresh

выражение: переменная, представляющая объект Form.

Возвращаемое значение

Примечания

Использование метода Refresh эквивалентно выбору параметра Обновить на вкладке Главная.

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

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

В проекте Access (ADP) метод Refresh повторно запрашивает базу данных и отображает все новые или измененные записи, а также удаляет удаленные записи из таблицы, на которой основана форма. Кроме того, форма обновляется для отображения записей на основе всех изменений свойства Filter формы.

  • Часто обновление формы или таблицы выполняется быстрее, чем их повторный запрос. Это особенно верно, если первоначальный запрос выполнялся медленно.
  • Не путайте метод Refresh с методом Repaint, который перерисовывает экран с помощью всех ожидающихся визуальных изменений.

Пример

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

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

Событие Form.AfterUpdate (Access)

Событие AfterUpdate возникает после обновления измененных данных в элементе управления или записи.

Синтаксис

expression. После обновления

выражение: переменная, представляющая объект Form.

Замечания

Изменение данных в элементе управления с помощью Visual Basic или макроса, содержащего действие SetValue, не активирует эти события для элемента управления. Однако при переходе на другую запись или сохранении записи возникает событие AfterUpdate формы.

Чтобы выполнить макрос или процедуру события при возникновении этого события, задайте для свойства AfterUpdate имя макроса или [Процедура события].

Событие AfterUpdate активируется при обновлении элемента управления или записи. В записи измененные данные в каждом элементе управления обновляются, когда элемент управления теряет фокус или когда пользователь нажимает клавишу ВВОД или TAB.

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

При переходе к другой записи возникают события Exit и LostFocus для элемента управления, за которым следует событие Current для записи, в которую вы переместились, и события ВВОД и GotFocus для первого элемента управления в этой записи. Чтобы выполнить макрос или процедуру событий AfterUpdate без выполнения макросов exit и LostFocus или процедур событий, сохраните запись с помощью команды Сохранить запись в меню Записи .

Макросы и процедуры событий AfterUpdate выполняются только при изменении данных в элементе управления. Это событие не возникает при изменении значения в вычисляемом элементе управления. После обновления макросов и процедур событий для формы выполняются только при изменении данных в одном или нескольких элементах управления в записи.

Для привязанных элементов управления свойство OldValue не имеет обновленного значения до тех пор, пока не произойдет событие AfterUpdate для формы. Даже если пользователь вводит новое значение в элементе управления, параметр свойства OldValue не изменяется до тех пор, пока данные не будут сохранены (запись будет обновлена). При отмене обновления значение свойства OldValue заменяет существующее значение в элементе управления .

Для выполнения простых проверок или более сложных проверок, таких как требование значения в поле или проверка нескольких элементов управления в форме, можно использовать свойство ValidationRule для элементов управления и свойства ValidationRule и Required для полей и записей в таблицах.

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

Заставить обновление экрана в Excel VBA

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

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

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

ОТВЕТЫ

Ответ 1

Добавьте функцию DoEvents внутри цикла, см. ниже.

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

Ответ 2

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

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

Следующие команды, похоже, делают трюк:

Ответ 3

Поместите вызов DoEvents в цикл.

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

Ответ 4

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

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

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

Ответ 5

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

UserForm не будет обновляться в некоторых случаях, потому что DoEvents будет запускать события; однако Repaint обновит UserForm, и пользователь увидит изменения на экране, даже если другое событие сразу же следует за предыдущим событием.

В коде UserForm это просто:

Ответ 6

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

Источник

Vba excel обновление формы

Stacey, Спасибо!
Наконец-то нашел ответ

Интересно почему так происходит

Stacey, Спасибо!
Наконец-то нашел ответ

Интересно почему так происходит Fidgy

Сообщение Stacey, Спасибо!
Наконец-то нашел ответ

Интересно почему так происходит Автор — Fidgy
Дата добавления — 03.06.2019 в 18:03

1607oxana Дата: Суббота, 10.09.2022, 15:13 | Сообщение № 8

Fidgy, видимо элементу требуется перезагрузка

Stacey, спасибо большое!
но мне все же пришлось немного переделать

Image1.Visible = False
Image1.Visible = True

Fidgy, видимо элементу требуется перезагрузка

Stacey, спасибо большое!
но мне все же пришлось немного переделать

Image1.Visible = False
Image1.Visible = True 1607oxana

Сообщение Fidgy, видимо элементу требуется перезагрузка

Stacey, спасибо большое!
но мне все же пришлось немного переделать

Image1.Visible = False
Image1.Visible = True Автор — 1607oxana
Дата добавления — 10.09.2022 в 15:13

Источник

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

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

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

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

6 ответов

Добавьте функцию DoEvents внутри цикла, см. ниже.

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

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

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

Следующие команды, похоже, делают трюк:

Поместите вызов DoEvents в цикл.

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

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

UserForm не будет обновляться в некоторых случаях, потому что DoEvents будет запускать события; однако Repaint обновит UserForm, и пользователь увидит изменения на экране, даже если другое событие сразу же следует за предыдущим событием.

В коде UserForm это просто:

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

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

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

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

Источник

Adblock
detector

Обновление формы

BIT
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 25.07.2003 (Пт) 16:45

Обновление формы

В Excel при выполнении процедуры хотел в форму выводить информацию о состоянии выполнения, следующим образом

Form.Show 0

for i=1 to 500

‘ обработка данных

form.lable.caption=»Выполнено» & i

form.caption=»Выполнено» & i

next

но получилось form.caption — выводит информацию, а form.lable.caption — нет (поле формы не обновляется). Подскажите в чём моя ошибка.


alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 11.10.2005 (Вт) 12:48

Добавь Refresh или DoEvents.

Lasciate ogni speranza, voi ch’entrate.


Ser Artur
Начинающий
Начинающий
Аватара пользователя

 
Сообщения: 23
Зарегистрирован: 10.10.2005 (Пн) 13:03

Сообщение Ser Artur » 11.10.2005 (Вт) 12:59

А ты вставь на форму Label1 и скопируй код в код формы

Код: Выделить всё
If IsNumeric(Label1.Caption) = True Then
   Label1.Caption = Label1.Caption + 1
Else
   Label1.Caption = 1
End If
Rem


BIT
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 25.07.2003 (Пт) 16:45

Сообщение BIT » 11.10.2005 (Вт) 16:42

Спасибо DoEvents помогло, а вот Refresh и Form не совместимы по крайне мере по HELPу


Al Khamid
Бывалый
Бывалый
Аватара пользователя

 
Сообщения: 274
Зарегистрирован: 11.02.2004 (Ср) 10:00
Откуда: Москва, Ховрино

Сообщение Al Khamid » 12.10.2005 (Ср) 9:28

Ser Artur писал(а):А ты вставь на форму Label1 и скопируй код в код формы

Код: Выделить всё
If IsNumeric(Label1.Caption) = True Then
   Label1.Caption = Label1.Caption + 1
Else
   Label1.Caption = 1
End If
Rem

Сам придумал или профи подсказали? :D :twisted:


Ser Artur
Начинающий
Начинающий
Аватара пользователя

 
Сообщения: 23
Зарегистрирован: 10.10.2005 (Пн) 13:03

Сообщение Ser Artur » 12.10.2005 (Ср) 12:36

Какая ТЭБЭ РАЗНЫЦА смотри и молчи «ёжик» ничего личного


Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26
  • ICQ

Сообщение Amed » 12.10.2005 (Ср) 13:58

RayShade, ты где? :)

Дайте мне наконец модератора на всем форуме! :))



Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Like this post? Please share to your friends:
  • Обновление формул в word
  • Обновления для word 2003
  • Обновление формул автоматически excel
  • Обновления для excel 2013
  • Обновление форматов в excel