powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Обновление данных на экране
12 сообщений из 12, страница 1 из 1
Обновление данных на экране
    #36689780
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите, пожалуйста! Написан макрос перебирания элементов управления - выбор вариантов расчетов и копирования информации каждого из вариантов на отдельный лист. Чтобы не наблюдать всю процедуру хождения по листам книги Excel и копирования данных, в самом начале макроса добавлена строка Application.ScreenUpdating = 0, в конце макроса Application.ScreenUpdating = 1.
"Хождение по листам" действительно не отражается, но копирование информации на сводный лист все равно показывается и этот сводный лист "мигает". Как можно избавиться от этого мигания, чтобы было так: чистый лист - нажатие кнопки выполнения макроса - сразу лист с данными?
...
Рейтинг: 0 / 0
Обновление данных на экране
    #36689846
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tatirus,
вероятно в коде копирования включается/отключается обновление экрана. Посмотрите внимательнее внутри кода.
...
Рейтинг: 0 / 0
Обновление данных на экране
    #36689876
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121,
макрос состоит из таких кодов

Sheets("Лист1").Cells(224, 2).Value = True
Sheets("Лист1").Cells(230, 2).Value = True
For i = 1 To 3
Sheets("Лист1").Cells(i + 206, 2).Value = True
Sheets("Лист2").Select
Range("copy").Select
Selection.Copy
Sheets("Лист3").Select
Range("B" & ((i - 1) * Range("str").Value + 184)).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next

Вроде бы не содержит обновления экрана
...
Рейтинг: 0 / 0
Обновление данных на экране
    #36689940
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tatirus,

ну желательно полный код

Здесь неясно где включение отключение обновление экрана. Просто такого быть не должно. Скорее всего косяк в коде
...
Рейтинг: 0 / 0
Обновление данных на экране
    #36689948
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tatirus,
У меня этот код не мигает. Единственное, т.к. последний селект - это Sheets("Лист3").Select, то на него в конце вид и переключается. Поставьте в конце кода перед показом экрана селект на нужный лист.
...
Рейтинг: 0 / 0
Обновление данных на экране
    #36689958
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя в данном примере можно все селекты повыкидывать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub test()
Application.ScreenUpdating = False
For i =  1  To  3 
Sheets("Sheet1").Cells(i +  206 ,  2 ).Value = True
Range("copy").Copy
Sheets("Sheet3").Range("B" & ((i -  1 ) * Range("str").Value +  184 )).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next
Application.ScreenUpdating = True
End Sub
...
Рейтинг: 0 / 0
Обновление данных на экране
    #36689976
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shamanus,

Вот весь код:

Sub Эффективность_варианты()
' Перенос данных для каждого из вариантов на лист "Итоги"
Application.ScreenUpdating = 0
Dim s1, s2, s3 As Boolean
s1 = Sheets("Исходные").Cells(207, 2)
s2 = Sheets("Исходные").Cells(208, 2)
s3 = Sheets("Исходные").Cells(209, 2)
s4 = Sheets("Исходные").Cells(222, 2)
s5 = Sheets("Исходные").Cells(223, 2)
s6 = Sheets("Исходные").Cells(224, 2)
s7 = Sheets("Исходные").Cells(229, 2)
s8 = Sheets("Исходные").Cells(230, 2)
'=============================================================================
' Выбор варианта 1
Sheets("Исходные").Cells(222, 2).Value = True
Sheets("Исходные").Cells(229, 2).Value = True
Sheets("Лист").Select
Range("Лист1").Select
Selection.Copy
Sheets("Итоги").Select
Range("B23").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'=============================================================================
' Выбор варианта 2
Sheets("Исходные").Cells(223, 2).Value = True
For i = 1 To 2
Sheets("Исходные").Cells(i + 228, 2).Value = True
Sheets("Лист").Select
Range("Лист1").Select
Selection.Copy
Sheets("Итоги").Select
Range("B" & ((i - 1) * Range("str").Value + 63)).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next
'=============================================================================
' Выбор варианта 3
Sheets("Исходные").Cells(224, 2).Value = True
Sheets("Исходные").Cells(229, 2).Value = True
Sheets("Исходные").Cells(229, 2).Value = True
Sheets("Лист").Select
Range("Лист1").Select
Selection.Copy
Sheets("Итоги").Select
Range("B145").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Sheets("Исходные").Cells(224, 2).Value = True
Sheets("Исходные").Cells(230, 2).Value = True
For i = 1 To 3
Sheets("Исходные").Cells(i + 206, 2).Value = True
Sheets("Лист").Select
Range("Лист1").Select
Selection.Copy
Sheets("Итоги").Select
Range("B" & ((i - 1) * Range("str").Value + 184)).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next
'=============================================================================
Sheets("Исходные").Cells(207, 2) = s1
Sheets("Исходные").Cells(208, 2) = s2
Sheets("Исходные").Cells(209, 2) = s3

Sheets("Исходные").Cells(222, 2) = s4
Sheets("Исходные").Cells(223, 2) = s5
Sheets("Исходные").Cells(224, 2) = s6

Sheets("Исходные").Cells(229, 2) = s7
Sheets("Исходные").Cells(230, 2) = s8

Application.CutCopyMode = False

Sheets("Итоги").Select
Range("A1").Select

Application.ScreenUpdating = 1

End Sub
...
Рейтинг: 0 / 0
Обновление данных на экране
    #36690013
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tatirus,

у меня код выполняется без заморочек
По правилам написания кодов вроде тоже все корректно
...
Рейтинг: 0 / 0
Обновление данных на экране
    #36690023
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tatirus, ну а так, без лишних селектов не лучше?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
Sub Эффективность_варианты()
' Перенос данных для каждого из вариантов на лист "Итоги"
Application.ScreenUpdating =  0 
Dim s1, s2, s3 As Boolean
s1 = Sheets("Исходные").Cells( 207 ,  2 )
s2 = Sheets("Исходные").Cells( 208 ,  2 )
s3 = Sheets("Исходные").Cells( 209 ,  2 )
s4 = Sheets("Исходные").Cells( 222 ,  2 )
s5 = Sheets("Исходные").Cells( 223 ,  2 )
s6 = Sheets("Исходные").Cells( 224 ,  2 )
s7 = Sheets("Исходные").Cells( 229 ,  2 )
s8 = Sheets("Исходные").Cells( 230 ,  2 )
'=============================================================================
' Выбор варианта 1
Sheets("Исходные").Cells( 222 ,  2 ).Value = True
Sheets("Исходные").Cells( 229 ,  2 ).Value = True
Sheets("Лист").Range("Лист1").Copy
Sheets("Итоги").Range("B23").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'=============================================================================
' Выбор варианта 2
Sheets("Исходные").Cells( 223 ,  2 ).Value = True
For i =  1  To  2 
Sheets("Исходные").Cells(i +  228 ,  2 ).Value = True
Sheets("Лист").Range("Лист1").Copy
Sheets("Итоги").Range("B" & ((i -  1 ) * Range("str").Value +  63 )).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next
'=============================================================================
' Выбор варианта 3
Sheets("Исходные").Cells( 224 ,  2 ).Value = True
Sheets("Исходные").Cells( 229 ,  2 ).Value = True
Sheets("Лист").Range("Лист1").Copy
Sheets("Итоги").Range("B145").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Sheets("Исходные").Cells( 224 ,  2 ).Value = True
Sheets("Исходные").Cells( 230 ,  2 ).Value = True
For i =  1  To  3 
Sheets("Исходные").Cells(i +  206 ,  2 ).Value = True
Sheets("Лист").Range("Лист1").Copy
Sheets("Итоги").Range("B" & ((i -  1 ) * Range("str").Value +  184 )).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next
'=============================================================================
Sheets("Исходные").Cells( 207 ,  2 ) = s1
Sheets("Исходные").Cells( 208 ,  2 ) = s2
Sheets("Исходные").Cells( 209 ,  2 ) = s3

Sheets("Исходные").Cells( 222 ,  2 ) = s4
Sheets("Исходные").Cells( 223 ,  2 ) = s5
Sheets("Исходные").Cells( 224 ,  2 ) = s6

Sheets("Исходные").Cells( 229 ,  2 ) = s7
Sheets("Исходные").Cells( 230 ,  2 ) = s8

Application.CutCopyMode = False

Sheets("Итоги").Select
Range("A1").Select

Application.ScreenUpdating =  1 

End Sub
...
Рейтинг: 0 / 0
Обновление данных на экране
    #36690031
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121, Shamanus,

ничего не понимаю... все равно вставка "мигает"... и без селектов не лучше...
...
Рейтинг: 0 / 0
Обновление данных на экране
    #36690051
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tatirus,

А файл сильно секретный
может дадите его погонять?
...
Рейтинг: 0 / 0
Обновление данных на экране
    #36690087
Tatirus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shamanus,

к сожалению, сильно-сильно секретный :-))
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Обновление данных на экране
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]