Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/133: Рейтинг темы: голосов - 133, средняя оценка - 4.87
206 / 13 / 2
Регистрация: 10.10.2009
Сообщений: 154

Как отключить "мерцание" окна

28.05.2011, 01:09. Показов 26694. Ответов 5
Метки нет (Все метки)

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

В макросе одна за другой открываются две книги Excel.

Visual Basic
1
2
Set wb1 = Workbooks.Open(Filename:=ThisWorkbook.Path & "\Книга1")
Set wb2 = Workbooks.Open(Filename:=ThisWorkbook.Path & "\Книга2")
Первая книга используется в качестве базы данных. Данные первой книги применяются во второй книге.

В таком открытии двух книг заметно мерцание на экране перной книги.

Вопрос – возможно ли при открытии двух подряд книг избавится от мерцания первой книги. Тоесть первая книга должна откриваться, но не должна быть активной даже на мгновение. И если возможно то как?

Например, так не проходит.

Visual Basic
1
2
3
4
5
Application.ScreenUpdating = False ' Отключаем “мерцание” окна
 Set wb1 = Workbooks.Open(Filename:=ThisWorkbook.Path & "\Книга1")
 Application.ScreenUpdating = True ' Возвращаем режим обновления экрана при изменении
 ThisWorkbook.Activate ' Возвращаем указатель текущего приложения (для избежания различных глюков)
Set wb2 = Workbooks.Open(Filename:=ThisWorkbook.Path & "\Книга2")
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.05.2011, 01:09
Ответы с готовыми решениями:

Мерцание окна при работе макроса
Здравствуйте! Как убрать мерцание окна, если макрос работает с несколькими книгами? Он сначала открывает все нужные книги, затем открывает...

Как отключить мерцание кнопки?
Пожалуйста скажите как отключить мерцание светло-синим при нажатии и наведении курсором на кнопку :)

Как отключить мерцание формы в Access?
Здравствуйте! У меня есть форма Access в процессе работы с которой происходит обновление определённой информации в БД. В процессе...

5
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
28.05.2011, 08:28
Код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub P1()
Dim База As Excel.Workbook
Set База = GetObject _
    (PathName:="C:\Documents and Settings\Пользователь\Рабочий стол\База.xls")
'Проверяем, что База открыта и посмотрим содержимое первого листа первой ячейки.
MsgBox База.Worksheets(1).Cells(1, 1).Value
'Закрываем.
База.Close SaveChanges:=False
'Далее удаляем объектную переменную База.
'Если объектная переменная объявлена внутри процедуры,
'то это просто формальность, т.к. объектная переменная сама
'удалится после завершения процедуры. Лучше всегда использовать,
'чтобы не забыть это сделать тогда, когда это надо.
Set База = Nothing
End Sub
1
206 / 13 / 2
Регистрация: 10.10.2009
Сообщений: 154
28.05.2011, 12:25  [ТС]
Спасибо за отзыв.

Так тоже не проходит. Применяю код:

Visual Basic
1
2
3
4
5
6
7
8
Sub Макрос_Щелкнуть() 
Dim База As Excel.Workbook
Dim wb1 As Workbook
Set База = GetObject _
    (PathName:="C:\Documents and Settings\Пользователь\Рабочий стол\Книга1.xls")
Set wb1 = Workbooks.Open(Filename:=ThisWorkbook.Path & "\Книга2")
Set База = Nothing
End Sub
Перед открытием Книги2 "мерцает" Книга1, тоесть База.

Разница в том, что при использовании GetObject кнопка "База" или "Книга1" на панели уведомлений отсутствует (что тоже хорошо). Без использования GetObject кнопка "Книга1" на панели уведомлений присутствует.
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
28.05.2011, 17:16
Mishel915,
обложите 4 строку кода в #3 командой ScreenUpdating.

И после 6 строки кода в #3 вставьте строку (иначе не закрывается книга База):
Visual Basic
1
База.Close SaveChanges:=False
0
206 / 13 / 2
Регистрация: 10.10.2009
Сообщений: 154
28.05.2011, 21:06  [ТС]
Такой код решает задачу:

Visual Basic
1
2
3
4
5
Application.ScreenUpdating = False ' Отключаем “мерцание” окна
Set wb1 = Workbooks.Open(Filename:=ThisWorkbook.Path & "\Книга1")
ThisWorkbook.Activate ' Возвращаем указатель текущего приложения (для избежания различных глюков)
Set wb2 = Workbooks.Open(Filename:=ThisWorkbook.Path & "\Книга2")
Application.ScreenUpdating = True ' Возвращаем режим обновления экрана при изменении
Следуя Вашим реконаписать из №4 написал код:

Visual Basic
1
2
3
4
5
6
7
Application.ScreenUpdating = False ' Отключаем “мерцание” окна
Set База = GetObject _
    (PathName:="C:\Documents and Settings\Пользователь\Рабочий стол\Книга1.xls")
ThisWorkbook.Activate ' Возвращаем указатель текущего приложения (для избежания различных глюков)
Set wb1 = Workbooks.Open(Filename:=ThisWorkbook.Path & "\Книга2")
Application.ScreenUpdating = True ' Возвращаем режим обновления экрана при изменении
База = Nothing
Тоже решает задачу. Кроме того, код не допускает появление кнопки "База" или "Книга1" на панели уведомлений, что может быть преимуществом.

Относительно

Visual Basic
1
База.Close SaveChanges:=False
то этот код не записывал так как открытая База нужна во второй книге.
0
1699 / 568 / 74
Регистрация: 10.04.2009
Сообщений: 9,236
28.05.2011, 21:16
по большому счёту в начале процедуры
Цитата Сообщение от Mishel915 Посмотреть сообщение
Application.ScreenUpdating = False ' Отключаем “мерцание” окна
а в конце ничего не пишут
В функции эту строку не пишут
И всё ОК, разве нет???
А по правильному да нужно в конце процедуры всё же поставить в Труе
то есть 1 раз в начале Фальше и 1 раз в конце на Труе и всё
Я почему так рассуждаю, потому что надо пробовать в разных процедурах и глаза это не техника надо сажать робота чтобы считал мерцание
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.05.2011, 21:16
Помогаю со студенческими работами здесь

Как отключить перерисовку главного окна
Подскажите, как отключить перерисовку главного окна, ну к примеру когда перемещаем или перекрываем другими окнами. Просто есть подозрение...

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

Как отключить/включить обновление окна в Excel?
Есть команда в VBA Application.ScreenUpdating = false Как то же самое написать в C#?

Как отключить вызов всплывающего окна профиля
Привет всем. Подскажите пожалуйста как убрать вызов попапа пользователя при клике на его аватар и перенаправить сразу на его порфиль(без...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C# Задание 1: КЛАСС FORM 1 public partial class Form1 : Form { Spisok listin = new Spisok(); . . .
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »