Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Обновление данных на экране / 12 сообщений из 12, страница 1 из 1
16.06.2010, 13:01
    #36689780
Tatirus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление данных на экране
Помогите, пожалуйста! Написан макрос перебирания элементов управления - выбор вариантов расчетов и копирования информации каждого из вариантов на отдельный лист. Чтобы не наблюдать всю процедуру хождения по листам книги Excel и копирования данных, в самом начале макроса добавлена строка Application.ScreenUpdating = 0, в конце макроса Application.ScreenUpdating = 1.
"Хождение по листам" действительно не отражается, но копирование информации на сводный лист все равно показывается и этот сводный лист "мигает". Как можно избавиться от этого мигания, чтобы было так: чистый лист - нажатие кнопки выполнения макроса - сразу лист с данными?
...
Рейтинг: 0 / 0
16.06.2010, 13:14
    #36689846
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление данных на экране
Tatirus,
вероятно в коде копирования включается/отключается обновление экрана. Посмотрите внимательнее внутри кода.
...
Рейтинг: 0 / 0
16.06.2010, 13:22
    #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
16.06.2010, 13:41
    #36689940
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление данных на экране
Tatirus,

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

Здесь неясно где включение отключение обновление экрана. Просто такого быть не должно. Скорее всего косяк в коде
...
Рейтинг: 0 / 0
16.06.2010, 13:44
    #36689948
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление данных на экране
Tatirus,
У меня этот код не мигает. Единственное, т.к. последний селект - это Sheets("Лист3").Select, то на него в конце вид и переключается. Поставьте в конце кода перед показом экрана селект на нужный лист.
...
Рейтинг: 0 / 0
16.06.2010, 13:47
    #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
16.06.2010, 13:52
    #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
16.06.2010, 14:05
    #36690013
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление данных на экране
Tatirus,

у меня код выполняется без заморочек
По правилам написания кодов вроде тоже все корректно
...
Рейтинг: 0 / 0
16.06.2010, 14:08
    #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
16.06.2010, 14:11
    #36690031
Tatirus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление данных на экране
Hugo121, Shamanus,

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

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

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


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