Добрый день. Есть часть "умной таблицы" столбик с данными на 2200 ячеек. В каждой ячейке есть данные с номером поддона.
Накидал макрос который берет значение из ячейки и создает на эту ячейку гипер ссылку, добавляя к "http://192.168.0.4/euromet/index.php?submit_form=031&input_roll_num=&input_poddon_num=" & значение из ячейки
Работает все хорошо и как надо. но вот время обработки более полу минуты. Возможно ли как то ускорить мой рукоZадый код ? [vba]
Код
Range("Склад_ГП[№ поддона]").Select On Error Resume Next For i = 1 To Selection.Count
Добрый день. Есть часть "умной таблицы" столбик с данными на 2200 ячеек. В каждой ячейке есть данные с номером поддона.
Накидал макрос который берет значение из ячейки и создает на эту ячейку гипер ссылку, добавляя к "http://192.168.0.4/euromet/index.php?submit_form=031&input_roll_num=&input_poddon_num=" & значение из ячейки
Работает все хорошо и как надо. но вот время обработки более полу минуты. Возможно ли как то ускорить мой рукоZадый код ? [vba]
Код
Range("Склад_ГП[№ поддона]").Select On Error Resume Next For i = 1 To Selection.Count
У меня макрос отработал за 3 секунды. Предположу, что тормозят работу макроса процедуры "Intro" и "Outro". Для данной задачи нет необходимости отключать обновление монитора, пересчет формул, т.к. макрос не вносит изменения на лист.
У меня макрос отработал за 3 секунды. Предположу, что тормозят работу макроса процедуры "Intro" и "Outro". Для данной задачи нет необходимости отключать обновление монитора, пересчет формул, т.к. макрос не вносит изменения на лист.Karataev
Закрыл весь эксель, закомментировал "Intro" и "Outro". С 38 до 18 сек снизилось. Но ни как не 3 сек ((
Значит комп мой не особо шустрый... Или все таки код кривой
PS есть стандартная выгрузка по складу готовой продукции, этой частью кода я навожу красоту и удобство. Эту часть кода пришлось вывести на отдельную кнопку.
Закрыл весь эксель, закомментировал "Intro" и "Outro". С 38 до 18 сек снизилось. Но ни как не 3 сек ((
Значит комп мой не особо шустрый... Или все таки код кривой
PS есть стандартная выгрузка по складу готовой продукции, этой частью кода я навожу красоту и удобство. Эту часть кода пришлось вывести на отдельную кнопку.antycapral
Сообщение отредактировал antycapral - Понедельник, 26.12.2016, 13:21
Вообще (сейчас подумал) отключение обновления монитора надо использовать, ведь гиперссылка оформляется - добавляется синий цвет, подчеркивание. А вот остальные отключения не используйте.
Вообще (сейчас подумал) отключение обновления монитора надо использовать, ведь гиперссылка оформляется - добавляется синий цвет, подчеркивание. А вот остальные отключения не используйте.Karataev
У меня за 0,3515625 С отключение обновления за 0,3359375, А если переписать немного, то в 10 раз меньше - за 0,03125 [vba]
Код
Sub ГиперссылкаГП() Application.ScreenUpdating = 0 t = Timer Dim d_ As Range, dn_ As Range Set d_ = Range("Склад_ГП[№ поддона]") ad_ = "http://192.168.0.4/euromet/index.php?submit_form=031&input_roll_num=&input_poddon_num=" On Error Resume Next For Each dn_ In d_ z_ = dn_.Value ActiveSheet.Hyperlinks.Add Anchor:=z_, Address:=ad_ & z_ Next dn_ On Error GoTo 0 MsgBox "Обработка данных продолжалась " & Timer - t & " сек.", vbInformation Application.ScreenUpdating = 1 End Sub
[/vba]
У меня за 0,3515625 С отключение обновления за 0,3359375, А если переписать немного, то в 10 раз меньше - за 0,03125 [vba]
Код
Sub ГиперссылкаГП() Application.ScreenUpdating = 0 t = Timer Dim d_ As Range, dn_ As Range Set d_ = Range("Склад_ГП[№ поддона]") ad_ = "http://192.168.0.4/euromet/index.php?submit_form=031&input_roll_num=&input_poddon_num=" On Error Resume Next For Each dn_ In d_ z_ = dn_.Value ActiveSheet.Hyperlinks.Add Anchor:=z_, Address:=ad_ & z_ Next dn_ On Error GoTo 0 MsgBox "Обработка данных продолжалась " & Timer - t & " сек.", vbInformation Application.ScreenUpdating = 1 End Sub
Sub ГиперссылкаГП() Dim unoCell As Range t = Timer Application.ScreenUpdating = 0 On Error Resume Next For Each unoCell In Range("Склад_ГП[№ поддона]") TXT = unoCell.Value ActiveSheet.Hyperlinks.Add Anchor:=unoCell, Address:="http://192.168.0.4/euromet/index.php?submit_form=031&input_roll_num=&input_poddon_num=" & TXT
Next On Error GoTo 0 Application.ScreenUpdating = True MsgBox "Обработка данных продолжалась " & Timer - t & " сек.", vbInformation
End Sub
[/vba]
У меня за 1,5 сек. Код почти как у Бороды [vba]
Код
Sub ГиперссылкаГП() Dim unoCell As Range t = Timer Application.ScreenUpdating = 0 On Error Resume Next For Each unoCell In Range("Склад_ГП[№ поддона]") TXT = unoCell.Value ActiveSheet.Hyperlinks.Add Anchor:=unoCell, Address:="http://192.168.0.4/euromet/index.php?submit_form=031&input_roll_num=&input_poddon_num=" & TXT
Next On Error GoTo 0 Application.ScreenUpdating = True MsgBox "Обработка данных продолжалась " & Timer - t & " сек.", vbInformation
[offtop] Что самое странное, два ноута мой Win_10 + 2016 офис , на втором Win_7 + 2013 офис , картина одна и та же. Мой код от 20 до 40 сек Код от Бороды 0,5 сек
Иду в "пешее" по другим машинам, везде все одинаково, оба кода обрабатывают за 0,8 - 1,5 сек, сильной разницы не видать.
Все выполняется на HP ProBook 430 G3 , логику не могу понять из за чего (оперативки везде больше чем надо)
[offtop] Что самое странное, два ноута мой Win_10 + 2016 офис , на втором Win_7 + 2013 офис , картина одна и та же. Мой код от 20 до 40 сек Код от Бороды 0,5 сек
Иду в "пешее" по другим машинам, везде все одинаково, оба кода обрабатывают за 0,8 - 1,5 сек, сильной разницы не видать.
Все выполняется на HP ProBook 430 G3 , логику не могу понять из за чего (оперативки везде больше чем надо)antycapral