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. Показов 35631. Ответов 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

My Excel tool performs a long task, and I’m trying to be kind to the user by providing a progress report in the status bar, or in some cell in the sheet, as shown below. But the screen doesn’t refresh, or stops refreshing at some point (e.g. 33%). The task eventually completes but the progress bar is useless.

What can I do to force a screen update?

For i=1 to imax ' imax is usually 30 or so
    fractionDone=cdbl(i)/cdbl(imax)
    Application.StatusBar = Format(fractionDone, "0%") & "done..."
    ' or, alternatively:
    ' statusRange.value = Format(fractionDone, "0%") & "done..."

    ' Some code.......

Next i

I’m using Excel 2003.

Community's user avatar

asked Sep 17, 2010 at 12:42

Jean-François Corbett's user avatar

Add a DoEvents function inside the loop, see below.

You may also want to ensure that the Status bar is visible to the user and reset it when your code completes.

Sub ProgressMeter()

Dim booStatusBarState As Boolean
Dim iMax As Integer
Dim i As Integer

iMax = 10000

    Application.ScreenUpdating = False
''//Turn off screen updating

    booStatusBarState = Application.DisplayStatusBar
''//Get the statusbar display setting

    Application.DisplayStatusBar = True
''//Make sure that the statusbar is visible

    For i = 1 To iMax ''// imax is usually 30 or so
        fractionDone = CDbl(i) / CDbl(iMax)
        Application.StatusBar = Format(fractionDone, "0%") & " done..."
        ''// or, alternatively:
        ''// statusRange.value = Format(fractionDone, "0%") & " done..."
        ''// Some code.......

        DoEvents
        ''//Yield Control

    Next i

    Application.DisplayStatusBar = booStatusBarState
''//Reset Status bar display setting

    Application.StatusBar = False
''//Return control of the Status bar to Excel

    Application.ScreenUpdating = True
''//Turn on screen updating

End Sub

Ben McCormack's user avatar

Ben McCormack

31.8k46 gold badges145 silver badges221 bronze badges

answered Sep 17, 2010 at 16:04

Robert Mearns's user avatar

Robert MearnsRobert Mearns

11.8k3 gold badges38 silver badges42 bronze badges

2

Text boxes in worksheets are sometimes not updated
when their text or formatting is changed, and even
the DoEvent command does not help.

As there is no command in Excel to refresh a worksheet
in the way a user form can be refreshed, it is necessary
to use a trick to force Excel to update the screen.

The following commands seem to do the trick:

- ActiveSheet.Calculate    
- ActiveWindow.SmallScroll    
- Application.WindowState = Application.WindowState

brettdj's user avatar

brettdj

54.6k16 gold badges113 silver badges176 bronze badges

answered Dec 19, 2011 at 12:37

Jan Petersen's user avatar

2

Put a call to DoEvents in the loop.

This will affect performance, so you might want to only call it on each, say, 10th iteration.
However, if you only have 30, that’s hardly an issue.

answered Sep 17, 2010 at 13:05

GSerg's user avatar

GSergGSerg

75.3k17 gold badges160 silver badges340 bronze badges

@Hubisans comment worked best for me.

ActiveWindow.SmallScroll down:=1
ActiveWindow.SmallScroll up:=1

answered Nov 27, 2019 at 17:57

FreeSoftwareServers's user avatar

1

Specifically, if you are dealing with a UserForm, then you might try the Repaint method. You might encounter an issue with DoEvents if you are using event triggers in your form. For instance, any keys pressed while a function is running will be sent by DoEvents The keyboard input will be processed before the screen is updated, so if you are changing cells on a spreadsheet by holding down one of the arrow keys on the keyboard, then the cell change event will keep firing before the main function finishes.

A UserForm will not be refreshed in some cases, because DoEvents will fire the events; however, Repaint will update the UserForm and the user will see the changes on the screen even when another event immediately follows the previous event.

In the UserForm code it is as simple as:

Me.Repaint

answered Mar 18, 2013 at 0:29

user2180598's user avatar

This worked for me:

ActiveWindow.SmallScroll down:=0

or more simply:

ActiveWindow.SmallScroll 0

answered Mar 23, 2020 at 17:50

PKanold's user avatar

I couldn’t gain yet the survey of an inherited extensive code. And exact this problem bugged me for months. Many approches with DoEnvents were not helpful.
Above answer helped. Placeing this Sub in meaningful positions in the code worked even in combination with progress bar

Sub ForceScreenUpdate()
    Application.ScreenUpdating = True
    Application.EnableEvents = True
    Application.Wait Now + #12:00:01 AM#
    Application.ScreenUpdating = False
    Application.EnableEvents = False
End Sub

answered May 4, 2020 at 20:36

CH Oldie's user avatar

1

In my case: A complex Excel with a graphic simulation using shapes which move. In order to speed up, I wished to update the display only each 10th optimization step. Therefore, every 10th step, I had to switch it back on, followed by a doevents — but I ran into the problems described above. — Now, which is odd: Simply stating the screenupdating=True TWICE, it works. ??!! This is crazy.

        If counteR Mod 10 = 0 Then
            'must state this twice. WHY ??
            Application.ScreenUpdating = True
            Application.ScreenUpdating = True
            DoEvents
            Application.ScreenUpdating = False
        End If

answered Mar 4 at 16:46

Pelton's user avatar

1

This is not directly answering your question at all, but simply providing an alternative. I’ve found in the many long Excel calculations most of the time waiting is having Excel update values on the screen. If this is the case, you could insert the following code at the front of your sub:

Application.ScreenUpdating = False
Application.EnableEvents = False

and put this as the end

Application.ScreenUpdating = True
Application.EnableEvents = True

I’ve found that this often speeds up whatever code I’m working with so much that having to alert the user to the progress is unnecessary. It’s just an idea for you to try, and its effectiveness is pretty dependent on your sheet and calculations.

answered Sep 17, 2010 at 16:05

Michael's user avatar

MichaelMichael

1,6362 gold badges16 silver badges21 bronze badges

0

On a UserForm two things worked for me:

  1. I wanted a scrollbar in my form on the left. To do that, I first had to add an Arabic language to «Change administrative language» in the Language settings of Windows 10 (Settings->Time & Language->Change Administrative Language). The setting is actually for «Change the language of Non-Unicode Programs,» which I changed to Arabic (Algerian). Then in the properties of the form I set the «Right to Left» property to True. From there the form still drew a partial ghost right scrollbar at first, so I also had to add an unusual timed message box:
    Dim AckTime As Integer, InfoBox As Object
    Set InfoBox = CreateObject("WScript.Shell")
    'Set the message box to close after 10 seconds
    AckTime = 1
    Select Case InfoBox.Popup("Please wait.", AckTime, "This is your Message Box", 0)
    Case 1, -1
    End Select
  1. I tried everything to get the screen to redraw again to show the first text box in it’s proper alignment in the form, instead of partially underneath or at least immediately adjacent to the scrollbar instead of 4 pixels to the right where I wanted it. Finally I got this off another Stackoverflow post (which I now can’t find or I would credit it) that worked like a charm:
Me.Frame1.Visible = False
Me.Frame1.Visible = True

answered Apr 7, 2021 at 11:09

socrtwo's user avatar

socrtwosocrtwo

1221 silver badge12 bronze badges

In my case the problem was in trying to make one shape visible and another one invisible on a worksheet.

This is my approach to «inactivating» a button [shape] once the user has clicked it. The two shapes are the same size and in the same place, but the «inactive» version has dimmer colors, which was a good approach, but it didn’t work, because I could never get the screen to update after changing .visible = FALSE to = TRUE and vice versa.

None of the relevant tricks in this thread worked. But today I found a solution that worked for me, at this link on Reddit

Essentially you just call DoEvents twice in immediate succession after the code that makes the changes. Now why? I can’t say, but it did work.

Gass's user avatar

Gass

6,4822 gold badges33 silver badges37 bronze badges

answered Aug 4, 2021 at 12:51

Soproni's user avatar

SoproniSoproni

51 silver badge3 bronze badges

I’ve been trying to solve this Force a screen update on a Worksheet (not a userform) for many years with limited success with
doevents and scrolling etc.. This CH Oldie solutions works best with a slight mod.

I took out the Wait and reset ScreenUpdating and EnableEvents back to true.

This works office excel 2002 through to office 365

Sub Sheet1Mess(Mess1 As String)
    Sheet1.Range("A6").Value = Mess1
    ForceScreenUpdate
End Sub
Sub ForceScreenUpdate()
    Application.ScreenUpdating = True
    Application.EnableEvents = True
   ' Application.Wait Now + #12:00:01 AM#
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.ScreenUpdating = True
    Application.EnableEvents = True
End Sub

Gass's user avatar

Gass

6,4822 gold badges33 silver badges37 bronze badges

answered Aug 26, 2021 at 3:23

Rodney Sammut's user avatar

Понравилась статья? Поделить с друзьями:
  • Vba excel обновить все данные
  • Vba excel область ячеек
  • Vba excel нумерация строк кода
  • Vba excel нумерация страниц
  • Vba excel номер строки по значению ячейки