Здравствуйте! У меня макрос выполняется примерно 2-3 минуты Подскажите пожалуйста можно ли сделать так, что бы во время выполнения данного макроса на экран выводилось сообщение типа MsgBox с надписью "Подождите ведутся расчеты", которое не требовало бы никакого отклика и исчезало во время завершения макроса, или сменялось обычным MsgBox "Все готово"
Но в примере скрипт выполняется быстро.
Здравствуйте! У меня макрос выполняется примерно 2-3 минуты Подскажите пожалуйста можно ли сделать так, что бы во время выполнения данного макроса на экран выводилось сообщение типа MsgBox с надписью "Подождите ведутся расчеты", которое не требовало бы никакого отклика и исчезало во время завершения макроса, или сменялось обычным MsgBox "Все готово"
Но в примере скрипт выполняется быстро.lexa19921904
В нете полно прогрессбаров на ВБА, но для начала стоило бы использовать все возможности по ускорению макроса. Например, сократить к-во обращений к листу. Глядишь прогрессбар и не понадобится, тем более, что они значительно увеличивают время выполнения. Например: [vba]
Код
Sub test() Dim x, y(), i&, k&, n&, s$ Dim z&, q&, w& x = Range("A1").CurrentRegion.Value For i = 2 To UBound(x) x(i, 4) = x(i, 2) * x(i, 3) Next Range("A1").CurrentRegion.Value = x ' Do Until Cells(j, 2) = "" ' Cells(j, 4) = Cells(j, 2) * Cells(j, 3) ' j = j + 1 ' Loop ' x = Range("A1").CurrentRegion.Value ReDim y(1 To UBound(x), 1 To 2) ...
[/vba]
В нете полно прогрессбаров на ВБА, но для начала стоило бы использовать все возможности по ускорению макроса. Например, сократить к-во обращений к листу. Глядишь прогрессбар и не понадобится, тем более, что они значительно увеличивают время выполнения. Например: [vba]
Код
Sub test() Dim x, y(), i&, k&, n&, s$ Dim z&, q&, w& x = Range("A1").CurrentRegion.Value For i = 2 To UBound(x) x(i, 4) = x(i, 2) * x(i, 3) Next Range("A1").CurrentRegion.Value = x ' Do Until Cells(j, 2) = "" ' Cells(j, 4) = Cells(j, 2) * Cells(j, 3) ' j = j + 1 ' Loop ' x = Range("A1").CurrentRegion.Value ReDim y(1 To UBound(x), 1 To 2) ...