оптимизация макросов excel
rEturned
Дата: Пятница, 24.04.2015, 11:45 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Добрый день! Подскажите пожалуйста можно ли как-то оптимизировать мой фаил ( очень долго обрабатывает информацию, и подвисает) Зарание благодарен за любую помощь. в файле нужны все действия которые прописаны в макросах и формулах [vba]Код
Sub НАКЛАДНАЯ_1() ActiveSheet.Protect Password:="123", AllowFiltering:=True, UserInterfaceOnly:=True ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=1 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=2 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=3 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=4 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=5 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=6 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=7 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=8 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=9 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=10 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=11 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=12 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=13 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=14 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=15 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=16 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=17 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=18 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=19 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=20 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=21 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=22 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=23 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=24 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=25 Columns("D:X").Hidden = True Columns("E:E").Hidden = False Columns("G:G").Hidden = False Range("B2").Select ActiveCell.FormulaR1C1 = _ "=""Товарная накладная № 001 от ""&TEXT(TODAY(),""[$-F800]"")" ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=7 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=7, Criteria1:="<>" Calculate ActiveSect Password:="123", AllowFiltering:=True, UserInterfaceOnly:=True End Sub
[/vba]
Добрый день! Подскажите пожалуйста можно ли как-то оптимизировать мой фаил ( очень долго обрабатывает информацию, и подвисает) Зарание благодарен за любую помощь. в файле нужны все действия которые прописаны в макросах и формулах [vba]Код
Sub НАКЛАДНАЯ_1() ActiveSheet.Protect Password:="123", AllowFiltering:=True, UserInterfaceOnly:=True ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=1 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=2 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=3 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=4 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=5 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=6 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=7 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=8 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=9 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=10 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=11 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=12 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=13 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=14 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=15 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=16 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=17 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=18 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=19 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=20 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=21 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=22 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=23 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=24 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=25 Columns("D:X").Hidden = True Columns("E:E").Hidden = False Columns("G:G").Hidden = False Range("B2").Select ActiveCell.FormulaR1C1 = _ "=""Товарная накладная № 001 от ""&TEXT(TODAY(),""[$-F800]"")" ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=7 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=7, Criteria1:="<>" Calculate ActiveSect Password:="123", AllowFiltering:=True, UserInterfaceOnly:=True End Sub
[/vba] rEturned
Сообщение отредактировал rEturned - Пятница, 24.04.2015, 14:59
Ответить
Сообщение Добрый день! Подскажите пожалуйста можно ли как-то оптимизировать мой фаил ( очень долго обрабатывает информацию, и подвисает) Зарание благодарен за любую помощь. в файле нужны все действия которые прописаны в макросах и формулах [vba]Код
Sub НАКЛАДНАЯ_1() ActiveSheet.Protect Password:="123", AllowFiltering:=True, UserInterfaceOnly:=True ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=1 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=2 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=3 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=4 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=5 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=6 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=7 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=8 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=9 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=10 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=11 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=12 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=13 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=14 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=15 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=16 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=17 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=18 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=19 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=20 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=21 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=22 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=23 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=24 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=25 Columns("D:X").Hidden = True Columns("E:E").Hidden = False Columns("G:G").Hidden = False Range("B2").Select ActiveCell.FormulaR1C1 = _ "=""Товарная накладная № 001 от ""&TEXT(TODAY(),""[$-F800]"")" ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=7 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=7, Criteria1:="<>" Calculate ActiveSect Password:="123", AllowFiltering:=True, UserInterfaceOnly:=True End Sub
[/vba] Автор - rEturned Дата добавления - 24.04.2015 в 11:45
Skif-F
Дата: Пятница, 24.04.2015, 12:33 |
Сообщение № 2
Группа: Проверенные
Ранг: Участник
Сообщений: 73
Репутация:
14
±
Замечаний:
0% ±
Excel 2007, 2010, 2013, 2016
Нет файла, не могу попробовать. Но "в лоб" - так: [vba]Код
Sub НАКЛАДНАЯ_1() Application.ScreenUpdating = False With ActiveSheet .Protect Password:="123", AllowFiltering:=True, UserInterfaceOnly:=True .Range("$A$10:$Y$5009").AutoFilter .Columns("D:X").Hidden = True .Columns("E:E").Hidden = False .Columns("G:G").Hidden = False .Cells("B2").FormulaR1C1 = _ "=""Товарная накладная № 001 от ""&TEXT(TODAY(),""[$-F800]"")" .Range("$A$10:$Y$5009").AutoFilter Field:=7, Criteria1:="<>" .Calculate .Protect Password:="123", AllowFiltering:=True, UserInterfaceOnly:=True End With Application.ScreenUpdating = True End Sub
[/vba]
Нет файла, не могу попробовать. Но "в лоб" - так: [vba]Код
Sub НАКЛАДНАЯ_1() Application.ScreenUpdating = False With ActiveSheet .Protect Password:="123", AllowFiltering:=True, UserInterfaceOnly:=True .Range("$A$10:$Y$5009").AutoFilter .Columns("D:X").Hidden = True .Columns("E:E").Hidden = False .Columns("G:G").Hidden = False .Cells("B2").FormulaR1C1 = _ "=""Товарная накладная № 001 от ""&TEXT(TODAY(),""[$-F800]"")" .Range("$A$10:$Y$5009").AutoFilter Field:=7, Criteria1:="<>" .Calculate .Protect Password:="123", AllowFiltering:=True, UserInterfaceOnly:=True End With Application.ScreenUpdating = True End Sub
[/vba] Skif-F
Ответить
Сообщение Нет файла, не могу попробовать. Но "в лоб" - так: [vba]Код
Sub НАКЛАДНАЯ_1() Application.ScreenUpdating = False With ActiveSheet .Protect Password:="123", AllowFiltering:=True, UserInterfaceOnly:=True .Range("$A$10:$Y$5009").AutoFilter .Columns("D:X").Hidden = True .Columns("E:E").Hidden = False .Columns("G:G").Hidden = False .Cells("B2").FormulaR1C1 = _ "=""Товарная накладная № 001 от ""&TEXT(TODAY(),""[$-F800]"")" .Range("$A$10:$Y$5009").AutoFilter Field:=7, Criteria1:="<>" .Calculate .Protect Password:="123", AllowFiltering:=True, UserInterfaceOnly:=True End With Application.ScreenUpdating = True End Sub
[/vba] Автор - Skif-F Дата добавления - 24.04.2015 в 12:33
rEturned
Дата: Пятница, 24.04.2015, 14:30 |
Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Приложил фаил, строки удолил лишние чтоб была возможность прикрепить тут фаил Все формулы должны быть рассчитаны на 5009 строк Как мне кажется висит он из за этого кода. [vba]Код
Option Explicit Public Function SumVisible(myRng As Range) Dim myCell As Range, mySum As Double Application.Volatile For Each myCell In myRng If myCell.ColumnWidth <> 0 Then mySum = mySum + myCell.Value Next myCell SumVisible = mySum
[/vba]
Приложил фаил, строки удолил лишние чтоб была возможность прикрепить тут фаил Все формулы должны быть рассчитаны на 5009 строк Как мне кажется висит он из за этого кода. [vba]Код
Option Explicit Public Function SumVisible(myRng As Range) Dim myCell As Range, mySum As Double Application.Volatile For Each myCell In myRng If myCell.ColumnWidth <> 0 Then mySum = mySum + myCell.Value Next myCell SumVisible = mySum
[/vba] rEturned
Сообщение отредактировал rEturned - Пятница, 24.04.2015, 14:59
Ответить
Сообщение Приложил фаил, строки удолил лишние чтоб была возможность прикрепить тут фаил Все формулы должны быть рассчитаны на 5009 строк Как мне кажется висит он из за этого кода. [vba]Код
Option Explicit Public Function SumVisible(myRng As Range) Dim myCell As Range, mySum As Double Application.Volatile For Each myCell In myRng If myCell.ColumnWidth <> 0 Then mySum = mySum + myCell.Value Next myCell SumVisible = mySum
[/vba] Автор - rEturned Дата добавления - 24.04.2015 в 14:30
Manyasha
Дата: Пятница, 24.04.2015, 14:49 |
Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация:
898
±
Замечаний:
0% ±
Excel 2010, 2016
rEturned , вместо кучи строк[vba]Код
ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=1 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=2 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=3 ...
[/vba] можно писать[vba]Код
ActiveSheet.ShowAllData
[/vba] Еще можно отключить обновление экрана [vba]Код
ActiveSheet.Protect Password:'... Application.ScreenUpdating = False 'Ваш код Application.ScreenUpdating = True ActiveSheet.Protect Password:='...
[/vba] [p.s.]В файле переделала макрос Наклодная_1[/p.s.]
rEturned , вместо кучи строк[vba]Код
ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=1 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=2 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=3 ...
[/vba] можно писать[vba]Код
ActiveSheet.ShowAllData
[/vba] Еще можно отключить обновление экрана [vba]Код
ActiveSheet.Protect Password:'... Application.ScreenUpdating = False 'Ваш код Application.ScreenUpdating = True ActiveSheet.Protect Password:='...
[/vba] [p.s.]В файле переделала макрос Наклодная_1[/p.s.]Manyasha
ЯД: 410013299366744 WM: R193491431804
Ответить
Сообщение rEturned , вместо кучи строк[vba]Код
ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=1 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=2 ActiveSheet.Range("$A$10:$Y$5009").AutoFilter Field:=3 ...
[/vba] можно писать[vba]Код
ActiveSheet.ShowAllData
[/vba] Еще можно отключить обновление экрана [vba]Код
ActiveSheet.Protect Password:'... Application.ScreenUpdating = False 'Ваш код Application.ScreenUpdating = True ActiveSheet.Protect Password:='...
[/vba] [p.s.]В файле переделала макрос Наклодная_1[/p.s.]Автор - Manyasha Дата добавления - 24.04.2015 в 14:49
rEturned
Дата: Пятница, 24.04.2015, 15:47 |
Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Большое спасибо с сокращением макроса на фильтр, все сделал работает в 3 раза быстрее. Что еще можно поправить чтоб ускорить работу? так как при вводе данных на 1 листе, все равно подвисает =(
Большое спасибо с сокращением макроса на фильтр, все сделал работает в 3 раза быстрее. Что еще можно поправить чтоб ускорить работу? так как при вводе данных на 1 листе, все равно подвисает =( rEturned
Ответить
Сообщение Большое спасибо с сокращением макроса на фильтр, все сделал работает в 3 раза быстрее. Что еще можно поправить чтоб ускорить работу? так как при вводе данных на 1 листе, все равно подвисает =( Автор - rEturned Дата добавления - 24.04.2015 в 15:47
RAN
Дата: Пятница, 24.04.2015, 16:05 |
Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Лишнияя [vba][/vba] в файле не помеха? При каждом чихе 5000 раз пересчитывать?
Лишнияя [vba][/vba] в файле не помеха? При каждом чихе 5000 раз пересчитывать? RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Лишнияя [vba][/vba] в файле не помеха? При каждом чихе 5000 раз пересчитывать? Автор - RAN Дата добавления - 24.04.2015 в 16:05
rEturned
Дата: Пятница, 24.04.2015, 16:33 |
Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Лишнияя SumVisible в файле не помеха? При каждом чихе 5000 раз пересчитывать?
SumVisible нужна для подсчета столбцов работает по принципу формулы "промежуточные итоги" с применением фильтра как я понял excel не может формулами не учитывать скрытые столбцы. если есть вариант как то заменить был бы рад выслушать. Вопрос можно ли SumVisible применить только к 1 листу ?
Лишнияя SumVisible в файле не помеха? При каждом чихе 5000 раз пересчитывать?
SumVisible нужна для подсчета столбцов работает по принципу формулы "промежуточные итоги" с применением фильтра как я понял excel не может формулами не учитывать скрытые столбцы. если есть вариант как то заменить был бы рад выслушать. Вопрос можно ли SumVisible применить только к 1 листу ?rEturned
Сообщение отредактировал rEturned - Пятница, 24.04.2015, 17:30
Ответить
Сообщение Лишнияя SumVisible в файле не помеха? При каждом чихе 5000 раз пересчитывать?
SumVisible нужна для подсчета столбцов работает по принципу формулы "промежуточные итоги" с применением фильтра как я понял excel не может формулами не учитывать скрытые столбцы. если есть вариант как то заменить был бы рад выслушать. Вопрос можно ли SumVisible применить только к 1 листу ?Автор - rEturned Дата добавления - 24.04.2015 в 16:33