Перезаггрузка userform без выхода из неё |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Асааа
Пользователь
Сообщений: 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 |
Я люблю писать одновременно
5 |
ibrahimveg 2 / 1 / 2 Регистрация: 26.08.2015 Сообщений: 96 |
||||
16.05.2020, 23:22 |
5 |
|||
при обновлении перескакивает на первое значение формы. Есть ли вариант обновиться без смены позиции на начальную?
0 |
mobile 26777 / 14456 / 3192 Регистрация: 28.04.2012 Сообщений: 15,782 |
||||
16.05.2020, 23:34 |
6 |
|||
при обновлении перескакивает на первое значение формы. Есть ли вариант обновиться без смены позиции на начальную? Предположим в форме есть уникальное поле, назовем его для определенности ID. Тогда перед обновлением надо запомнить значение текущего ID, а после реквери его найти
Добавлено через 1 минуту
2 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
16.05.2020, 23:34 |
Помогаю со студенческими работами здесь Как обновить таблицу не закрывая форму? Как обновить dataGridView не закрывая форму? Как обновить подчиненную форму посредством макроса? Как обновить форму без перемещения скрола? Как обновить Подч.Форму, по значению из поля-со-списком Как обновить форму и где лучше хранить List<PartClass> ? у меня есть List<*мойкласс*> и его мне надо отображать на DataGrid, я его… Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 6 |
Содержание
- Метод Form.Refresh (Access)
- Синтаксис
- Возвращаемое значение
- Примечания
- Пример
- Поддержка и обратная связь
- Событие Form.AfterUpdate (Access)
- Синтаксис
- Замечания
- Поддержка и обратная связь
- Заставить обновление экрана в Excel VBA
- ОТВЕТЫ
- Ответ 1
- Ответ 2
- Ответ 3
- Ответ 4
- Ответ 5
- Ответ 6
- Vba excel обновление формы
- Принудительное обновление экрана в Excel VBA
- 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 | |
|
Обновление формы
- 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
Сам придумал или профи подсказали?
- 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