Страницы: 1
RSS
Как прикрутить макрос к существующему прогресс бару.
 

Здравствуйте, уважаемые знатоки! Нашел файлик с прогресс баром, здесь http://www.planetaexcel.ru/forum/?PAGE_NAME=read&FID=8&TID=27980 не получается прицепить свой макрос. Подскажите как это сделать.

 
Не нашёл в Вашем макросе циклов.  
Сравнение прайсов, таблиц - без настроек
 
Офф. Мне кажется Вам рановато еще заниматься 'рюшечками' в виде прогрессбаров и прочей мультипликации. В Ваших макросах столько мусора (видимо оставшегося от макрорекордера), что если его почистить и оптимизировать логику самой задачи, то прогрессбар Вам будет ненужен в принципе. Вы просто не заметите как Ваши макросы будут работать
Изменено: Sanja - 22.09.2017 08:47:33
Согласие есть продукт при полном непротивлении сторон
 
Поддерживаю Sanja, потому как на примере часть вашего кода
Код
Application.ScreenUpdating = False
        Sheets("Заказ").Select
        Range("H3").Select
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = "968"
        Range("I3").Select
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = "2318"
        Range("L3").Select
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = "2"
    ' ввод наполнения зеркало
      Sheets("Раз.система").Activate
    Range("T2").Select
    Selection.Copy
    Range("D18").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Заказ").Activate
     ' ввод профиль открытый
     Sheets("Раз.система").Activate
    Range("Y3").Select
    Selection.Copy
    Range("D8").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Заказ").Activate
    ' ввод тип профиля
    Sheets("Раз.система").Activate
    Range("X3").Select
    Selection.Copy
    Range("D9").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Заказ").Activate
    ' копирование итоговой цены
       Sheets("Сбор цен для прайса").[L2:O2].Copy
       Sheets("Сбор цен для прайса").Range("S6:V6").PasteSpecial Paste:=xlPasteValues
       'изменение размера 1100х2400х2
 Application.ScreenUpdating = False
        Sheets("Заказ").Select
        Range("H3").Select
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = "1068"
        Range("I3").Select
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = "2318"
    ' копирование итоговой цены
       Sheets("Сбор цен для прайса").[L2:O2].Copy
       Sheets("Сбор цен для прайса").Range("S7:V7").PasteSpecial Paste:=xlPasteValues
       'изменение размера 1200х2400х2
 Application.ScreenUpdating = False
        Sheets("Заказ").Select
        Range("H3").Select
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = "1168"
        Range("I3").Select
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = "2318"
    ' копирование итоговой цены
       Sheets("Сбор цен для прайса").[L2:O2].Copy
       Sheets("Сбор цен для прайса").Range("S8:V8").PasteSpecial Paste:=xlPasteValues
       'изменение размера 1300х2400х2
 Application.ScreenUpdating = False
на самом деле записывается вот так
Код
Application.ScreenUpdating = False
With Sheets("Заказ")
    .[H3].Resize(, 2).value = Array("1068", "2318"): .[L3].value = "2"
End With
With Sheets("Раз.система")
    .[T2].Copy .[D18]: .[Y3].Copy .[D8]: .[X3].Copy .[D9]
End With
With Sheets("Сбор цен для прайса")
    .[L2:O2].Copy [S6:V6]
    .[L2:O2].Copy [S7:V7]
End With
"Все гениальное просто, а все простое гениально!!!"
 
Советую Ссылка, помогает избавится от части мусора :)
 
Sanja,Макрос записывал макрорекордером, понимаю, что мусора  в коде не мало и можно оптимизировать макрос,
но у вы, на большее как записать макрос мак.рек. не способен. Прогресс бар нужен
для визуального восприятия, не для ускорения процесса.

 
Nordheim, .copy не годится, там ведь .PasteSpecial Paste:=xlPasteValues
значит нужно
Код
 .[D18].value =  .[T2].value
и т.д.
Изменено: Hugo - 22.09.2017 10:23:04
 
Hugo, Согласен, только если у автора в файле формулы, если же значения то прокатит и с copy :).
А так там весь код, непонятно что  8-0 .
"Все гениальное просто, а все простое гениально!!!"
 
Hugo,Вы правы конечный результат копируется с формулой и выгружается как
значения. Весьма благодарен всем за уделенное внимание. И все же вопрос остается
открытым, как прикрутить макрос к существующему прогресс бару.

 
К вашему макросу нет смысла, если весь код записать правильно, то работу прогресс бара не будет видно. потому как код не сложный и будет выполнен мгновенно.
"Все гениальное просто, а все простое гениально!!!"
 
полагаю у всех, такой же открытый вопрос:
к какому "существующему"???
в ссылке из первого сообщения - тема, где выложено несколько наработок разных авторов на тему "прогрессбар", все они "существующие", что нужно Вам не понятно. понятно только, что Вам нужно четче излагать свои мысли, тогда, возможно, и ответы будут конкретными.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
В моем  файле есть две
кнопки, одна из них называется (мой макрос) ну а вторая кнопка самого автора
прогресс бара, которая выполняет визуализацию процесса.

 
Nordheim,Возник вопрос из вашего примера
Код
Application.ScreenUpdating = FalseWith Sheets("Заказ")
    .[H3].Resize(, 2).value = Array("1068", "2318"): .[L3].value = "2"
End With
With Sheets("Раз.система")
    .[T2].Copy .[D18]: .[Y3].Copy .[D8]: .[X3].Copy .[D9]
End With
With Sheets("Сбор цен для прайса")
    .[L2:O2].Copy [S6:V6]
    .[L2:O2].Copy [S7:V7]
End With
Если изменить структуру макроса, по сути добавятся строки. Это как то повлияет на скорость процесса?
Код
Application.ScreenUpdating = False
With Sheets("Заказ")
    .[H3].value = "1068"
    .[I3].value = "2168"
    .[L3].value = "2"
End With
With Sheets("Раз.система")
    .[T2].Copy .[D18]
    .[Y3].Copy .[D8]
    .[X3].Copy .[D9]
End With
With Sheets("Сбор цен для прайса")
    .[L2:O2].Copy .[S6:V6]
    .[L2:O2].Copy .[S7:V7]
End With
 
Цитата
dx25 написал:
Это как то повлияет на скорость процесса?
Нет, скорость останется прежней, в строке ":" является разделителем строк, фактически это одно и то же. Сделал так для сокращения количества строк.
Если у вас формулы нужно вставлять как значения то перепишите это так:
вместо  
Код
.[T2].Copy .[D18]
нужно
Код
.[d18] = .[t2]
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim,Спасибо!
 
Привет!
По мотивам файла из сообщения #1
Сравнение прайсов, таблиц - без настроек
 
Inexsu,Спасибо!  :)  
Страницы: 1
Наверх