2016-07-14 2 views
0

Я использую индикатор выполнения, чтобы показать пользователю статус работающего макроса, однако, поскольку макрос удаляет строки, он работает в обратном направлении For i = lastrow To 2 Step -1, что означает, что мой индикатор выполнения работает от 100% до 2 %.Экран хода VBA в обратном направлении Excel

Я только что подсчитал i, возможно ли, чтобы прогресс прочитывал информацию в обратном направлении при подсчете, так что пользователь, видимо, подсчитывает?

Sub update() 
Dim lastRow As Integer, email As String, pctCompl As Single 

lastRow = Sheets("Sheet1").Range("C5000").End(xlUp).Row 

For i = lastRow To 2 Step -1 
    email = Trim(Cells(i, 3).Value) 
    Set c = Sheets("Sheet3").Range("A:A").Find(email, LookIn:=xlValues) 
    If Not c Is Nothing Then 
     Cells(i, 1).EntireRow.Delete 
    End If 
    pctCompl = i 
    progress pctCompl 
Next i 

End Sub 

Sub progress(pctCompl As Single) 
UserForm1.Text.Caption = pctCompl & "% Completed" 
UserForm1.Bar.Width = pctCompl * 2 
DoEvents 
End Sub 

ответ

1

Заменить

progress pctCompl 

с

progress Abs(Round(i/lastRow * 100, 0) - 100) + 1 

Там нет необходимости устанавливать i переменной под названием pctCompl - просто передать значение к процедуре.

+0

Ok большого спасибо, я думаю о это, но теперь я получаю «Завершено 364%» (или независимо от последнего числа строк). –

+1

Хороший вопрос - я об этом не думал. Я обновил код для вычисления процента. –

2

как из коробки ответа вы можете рассмотреть этот подпункт:

Sub update()  
    With Worksheets("Sheet1") 
     With .Range("C2:C" & .Cells(.Rows.Count, 3).End(xlUp).Row) 
      With .offset(, .Parent.UsedRange.Columns.Count) 
       .FormulaR1C1 = "=iferror(match(RC3,Sheet3!C1,0),"""")" 
       .value = .value 
       .SpecialCells(xlCellTypeBlanks).EntireRow.Delete 
       .Delete 
      End With 
     End With 
    End With 
end Sub 

, который не должен требовать какого-либо прогресс бара на все ...

+0

Единственное требование связано с запросом клиента, но, по достоинству оценив это предложение, внимательно изучит это. –

Смежные вопросы