Страницы: 1
RSS
не работает функция Application.ScreenUpdating
 
Скажите, пожалуйста, в каких случаях не работает функция Application.ScreenUpdating? В макросе копирования с разных листов на один итоговый в начале кода установлена функция Application.ScreenUpdating = 0, в конце кода Application.ScreenUpdating = 0.  
 
Но экран все равно мигает на итоговом листе (показывает копирование в заданные диапазоны). А в строке текущего состояния периодически появляется "Расчет ячеек: 100%"
 
Так это пересчет ячеек:)  
Application.calculation = xlmanual  
Application.statusbar = ""  
 
Application.calculation = xlauto  
 
Написано с орфографическими ошибками:) по памяти, а как запускать отображение Статус бара - забыл. Наберите в поиске - должно найтись:)  
Игорь67
 
Насчет статусбара, из справки:  
oldStatusBar = Application.DisplayStatusBar  
Application.DisplayStatusBar = True  
Application.StatusBar = "Please be patient..."  
...  
Application.StatusBar = False  
Возвращаем исходный  
Application.DisplayStatusBar = oldStatusBar    
Насчет Application.ScreenUpdating  
В начале:  
Application.ScreenUpdating=false  
в конце  
Application.ScreenUpdating=true
Я сам - дурнее всякого примера! ...
 
Если я вписываю функцию    
Application.calculation = xlmanual  
Application.calculation = xlAutomatic  
то не выполняются расчеты при "перебирании" кнопок.  
 
Код макроса:  
 
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("Лист").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
 
У Вас этих Select-ов ненужных... Это страшный тормоз.  
Лучше так:  
' Выбор варианта 1  
Sheets("Исходные").Cells(222, 2).Value = True  
Sheets("Исходные").Cells(229, 2).Value = True  
Sheets("Лист").Select  
Range("Лист1").Copy  
Sheets("Итоги").Range("B23").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _  
:=False, Transpose:=False  
Так будет быстрее.  
И потом:    
Application.ScreenUpdating = 1  
 
True = -1  
а не 1.
Я сам - дурнее всякого примера! ...
 
Пропустил:  
Sheets("Лист").Select  
Range("Лист1").Copy  
Вместо этого:  
Sheets("Лист").Range("Лист1").Copy  
И так по всему макросу.
Я сам - дурнее всякого примера! ...
 
Макрос принял новый вид, но все равно отображается вставка данных на лист Итоги ("мигает" экран")  
 
Sub Эффективность_варианты()  
' Перенос эффективности для каждого из вариантов на лист "Итоги"  
Application.ScreenUpdating = False  
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("Итоги").Range("A1").Select  
 
Application.ScreenUpdating = True  
 
End Sub
 
Где-то я эти селекты уже вчера убирал.... :)
 
С6ейчас подумал - так может у Вас что-то в Private Sub Worksheet_Calculate() прописано?
 
Hugo, Private Sub Worksheet_Calculate()  - это для меня - далеко не аса в VB - уже сложно :)) Где это надо посмотреть?
 
Посмотрите в редакторе VBA в Sheets("Итоги").
 
И тогда:  
Application.EnableEvents=false  
В начало.  
А в конец, понятно, True
Я сам - дурнее всякого примера! ...
 
А еще может быть в Worksheet_Change. Вот оно и болтает на каждый чих. Вообще-то, лучше бы увидеть файл(с сооблюдением правил). Давно бы уже ответ был. А так гадаем. Экстрасенсы, мля...
Я сам - дурнее всякого примера! ...
Страницы: 1
Читают тему
Наверх