У меня есть приложение VBA, которое перебирает диапазон и вносит некоторые изменения. Однако меня мало волнует время выполнения, но я хочу показать пользователю, что изменения были внесены во время выполнения.
Я думал о чем-то подобном.
Private Sub ProcessALBODY(ByRef Fullpath, ByRef MasterWB)
...
For Each Row In rng.rows
... 'Do Something
DoEvents
ActiveWindow.ScrollRow = 1 'for each row scrolldown and proceed to next row
Next
...
End Sub
К сожалению, мое приложение зависает до тех пор, пока оно не будет завершено.
@TimWilliams Спас меня, сэр, пожалуйста, напишите это как ответ!
Эй, @V.Hunon, а как насчет моего?!? Помимо того, что он вызывает судороги, это потрясающе?!?! ☄?
Вы можете использовать строку состояния, чтобы показать прогресс. Используйте Application.StatusBar =
, а затем укажите выбранную строку, целое число и т. д. Если его поместить в оператор For, он будет обновляться с каждой итерацией.
ActiveWindow.ScrollRow = Row.Row
должен делать то, что ты хочешь
Хороший. Лучше, чем у меня.
Что выбрать или скрыть не работает?
rng.EntireRow.Hidden = True
For Each row In rng.Rows
row.EntireRow.Hidden = False
'do something.
rng.EntireRow.Hidden = True
Next
rng.EntireRow.Hidden = False
или
For Each row In rng.Rows
row.Select
'do something.
Next
ActiveWindow.ScrollRow = Row.Row