Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 11.06.2008, 21:51   #1
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию Как правильно расставить, Application?

Какой порядок, расстановки или не имеет значения?

Код:
With Application
         .EnableEvents = False
         .Calculation = xlManual
         .ScreenUpdating = False
 ------------КОД--------------
         .Calculation = xlAutomatic
         .EnableEvents = True
         .ScreenUpdating = True
End With
Собственно, как бы я их не раставлял дергается экран, коментировал .ScreenUpdating , то же самое и в чем разница между
.ScreenUpdating
.DisplayAlerts

Последний раз редактировалось valerij; 11.06.2008 в 23:02.
valerij вне форума
Старый 11.06.2008, 22:33   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Валера, ты говоришь книжек нет. Да устал бы ты в книжке искать DisplayAlerts. Набрал в справке - получил следующее:
DisplayAlerts
True if Microsoft Excel displays certain alerts and messages while a macro is running. Read/write Boolean.
Включил словарь и перевел (потому что в английском ничего не понимаю) Истина если Эксель показывает предупреждения и сообщения пока выполняется макрос.

ScreenUpdating
True if screen updating is turned on. Read/write Boolean.
Тут вроде понятно и без словаря: Истина если включено обновление экрана.

в каком порядке их расставить не суть важно. и расставляешь ты не Applications, а некоторые свойства одного приложения, которое называется Эксель. Надеюсь твой код выполняется между блоком запрещений и разрешений, а не после последнего?

Если экран дергается все равно - значит задача сложновата для твоей системы:
а) попытаться оптимизировать код
б) уменьшить количество обрабатываемых данных
в) добавить ресурсов в систему (память, проц, мать с новым чипсетом...)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 11.06.2008, 23:01   #3
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Надеюсь твой код выполняется между блоком запрещений и разрешений, а не после последнего?
Да, конечно, забыл между, "-----", проставить
Цитата:
Если экран дергается все равно - значит задача сложновата для твоей системы:
а) попытаться оптимизировать код
б) уменьшить количество обрабатываемых данных
в) добавить ресурсов в систему (память, проц, мать с новым чипсетом...)
а,б) Да вроде ерунда, выложить код??
в) Да куда еще больше:
Процессор: Intel(R) Core(TM)2 Duo CPU T7700 © 2.40GHz 2.40 GHz
Память (RAM): 4,00 ГБ, ДДР2
Тип системы: 64-разрядная операционная система Виста
valerij вне форума
Старый 11.06.2008, 23:12   #4
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Если все так как Вы пишете, и в коде нигде "случайно" не затесался .ScreenUpdating, "дергаться" не должно бы.
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума
Старый 11.06.2008, 23:18   #5
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
коде нигде "случайно" .
Фиг его знает, вот код
Код:
Sub Sum()
Dim dop As Long, pr As Long, i As Long
zSum = 0: iSum = 0: bSum = 0: i = 38
With Application
    .EnableEvents = False
    .DisplayAlerts = False
    .Calculation = xlManual
    
    For iCount& = 0 To 30
    pr = 13
    For dop = 19 To 29 Step 2
                With .Range("I" & dop).Offset(iCount& * 48)
                pr = pr - 1
     Range("I" & dop).Offset(iCount& * 48).NumberFormat = "General"
     Range("I" & dop).Offset(iCount& * 48).Font.ColorIndex = 10
    .FormulaR1C1 = "=IF(COUNTIF(НАКЛ!R2C255:R1378C255,R[" & pr & "]C)>0,R[" & pr & "]C,"""")"
                    .Value = .Value
                    End With
                With .Range("I" & dop + 1).Offset(iCount& * 48)
     Range("I" & dop + 1).Offset(iCount& * 48).NumberFormat = "0.00"
    .FormulaR1C1 = "=IF(R[-1]C,VLOOKUP(""""&R[-1]C&"""",НАКЛ!R2C3:R1378C5,3,0),"""")"
                    .Value = .Value
                    End With
                With .Range("I37").Offset(iCount& * 48)
     Range("I37").Offset(iCount& * 48).NumberFormat = "0.00"
    .FormulaR1C1 = "=R[-17]C+R[-15]C+R[-13]C+R[-11]C+R[-9]C+R[-7]C"
                   .Value = .Value
                    End With
                With .Range("I38").Offset(iCount& * 48)
     Range("I37").Offset(iCount& * 48).NumberFormat = "0.00"
    .FormulaR1C1 = "=RC[-3]-R[-1]C"
                   .Value = .Value
                    End With
Next
Next
.Calculation = xlAutomatic
    .EnableEvents = True
    .DisplayAlerts = True
End With
    'Поиск отрицательных чисел и положительных чисел
    Application.ScreenUpdating = False
      Do
                iSum = Range("I" & i)
                If iSum < 0 Then zSum = zSum + iSum: iSum = 0
                bSum = bSum + iSum
                i = i + 48
      Loop While Not i > 1430
    Range("A1") = zSum
    Range("I2") = bSum
    Range("A1").Activate
'    .Calculation = xlAutomatic
'    .EnableEvents = True
'    .DisplayAlerts = True
'End With
End Sub
valerij вне форума
Старый 11.06.2008, 23:30   #6
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

ВСе же сделайте так как Вы написали в первом посте, т.е.
With Application
.EnableEvents = False
.Calculation = xlManual
.ScreenUpdating = False
затем приведенный Вами код и в самом конце
.Calculation = xlAutomatic
.EnableEvents = True
.ScreenUpdating = True
End With
и уберите из кода 42 строку
Application.ScreenUpdating = False
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума
Старый 11.06.2008, 23:40   #7
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

и еще
если уж Вы написали в начале кода
.Calculation = xlManual
то в конце обязательно должно быть
.Calculation = xlAutomatic
иначе у Вас Excel перейдет в режим ручного пересчета, о чем мы уже как-то говорили.
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума
Старый 11.06.2008, 23:44   #8
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
и еще.
Да там, как бы два варианта, нижний закоментирован.
Вот так как, сейчас, мин. дергиваний
valerij вне форума
Старый 11.06.2008, 23:49   #9
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

все же попробуйте вот так

Код:
Sub Sum()
Dim dop As Long, pr As Long, i As Long
zSum = 0: iSum = 0: bSum = 0: i = 38
With Application
    .ScreenUpdating = False
    .EnableEvents = False
    .DisplayAlerts = False
    .Calculation = xlManual
    
    For iCount& = 0 To 30
    pr = 13
    For dop = 19 To 29 Step 2
                With .Range("I" & dop).Offset(iCount& * 48)
                pr = pr - 1
     Range("I" & dop).Offset(iCount& * 48).NumberFormat = "General"
     Range("I" & dop).Offset(iCount& * 48).Font.ColorIndex = 10
    .FormulaR1C1 = "=IF(COUNTIF(НАКЛ!R2C255:R1378C255,R[" & pr & "]C)>0,R[" & pr & "]C,"""")"
                    .Value = .Value
                    End With
                With .Range("I" & dop + 1).Offset(iCount& * 48)
     Range("I" & dop + 1).Offset(iCount& * 48).NumberFormat = "0.00"
    .FormulaR1C1 = "=IF(R[-1]C,VLOOKUP(""""&R[-1]C&"""",НАКЛ!R2C3:R1378C5,3,0),"""")"
                    .Value = .Value
                    End With
                With .Range("I37").Offset(iCount& * 48)
     Range("I37").Offset(iCount& * 48).NumberFormat = "0.00"
    .FormulaR1C1 = "=R[-17]C+R[-15]C+R[-13]C+R[-11]C+R[-9]C+R[-7]C"
                   .Value = .Value
                    End With
                With .Range("I38").Offset(iCount& * 48)
     Range("I37").Offset(iCount& * 48).NumberFormat = "0.00"
    .FormulaR1C1 = "=RC[-3]-R[-1]C"
                   .Value = .Value
                    End With
Next
Next
End With
    'Поиск отрицательных чисел и положительных чисел
      Do
                iSum = Range("I" & i)
                If iSum < 0 Then zSum = zSum + iSum: iSum = 0
                bSum = bSum + iSum
                i = i + 48
      Loop While Not i > 1430
        Range("A1") = zSum
        Range("I2") = bSum
        Range("A1").Activate
    .Calculation = xlAutomatic
    .EnableEvents = True
    .DisplayAlerts = True
    .ScreenUpdating = True
End With
End Sub
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума
Старый 11.06.2008, 23:55   #10
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

если
'Поиск отрицательных чисел и положительных чисел
будет работать некорректно, перместите
.Calculation = xlAutomatic
ниже этого комента, перед Do
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
application run *Devil* Общие вопросы Delphi 5 12.12.2012 21:30
Application.terminate GAGARIN-NEW Общие вопросы Delphi 11 09.03.2008 19:32
Application.ProcessMessages =LeonZone= Общие вопросы Delphi 11 27.01.2008 21:31
Application.ProcessMessages KAMASUTR Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 11.08.2007 23:38