VBA-Для каждого l oop: процент выполненного бара не работает - PullRequest
0 голосов
/ 31 марта 2020

Макрос, который я создал, готов и проходит через каждого клиента в диапазоне успешно; rngCust - это один столбец ячеек с разными именами клиентов в каждой ячейке cust. Этот макрос может занять много времени, поэтому я пытаюсь вставить индикатор выполнения, чтобы отобразить процент выполнения. Сейчас в rngCust есть около 50 ячеек (строк), но они регулярно меняются, поэтому в процентах от полной диаграммы необходимо вычислить последнюю строку, чтобы создать процент.

Я получил несколько примеры работы в Интернете, когда я копировал их, используя их упрощенный код c, но я пока не смог успешно включить ни один из них в мой макрос, даже с большим количеством исследований на форумах и веб-сайтах. Я все еще новичок в VBA. Я опубликовал это на MrExcel, но не смог заставить его работать с этим предложением.

Идея состоит в том, чтобы индикатор выполнения отображал процент завершения, как он идет от каждой cust ячейки в rngCust к следующей ячейке, в основном, каждая итерация l oop должна обновлять ее.

Это последний набор изменений, которые я пробовал, и здесь я получаю error msg 1004-"Method Range of Object Global Failed" on the lastrow= in the variable definition; Я также получаю error 91-"object variable or with block variable not set" на pctCompl= строка с вычислением прогресса в теле макроса.

Вот что у меня есть:

Макрос пользовательской формы:

Private Sub UserForm_Activate()

Call CreateCustomerInvoices

End Sub

Основной макрос CreateCustomerInvoices:

Dim wb As Workbook
Dim ws As Worksheet
Dim rngBilling As Range
Dim erps As Worksheet
Dim rngERPsumm As Range
Dim rngCust As Range
Dim cust As Range
Dim pctCompl As Single *'this is the first line of new code for the user form, everything above this is from the completed macro which runs correctly*
Dim lastrow As Long *'this is also for the user form*

lastrow = Range("rngCust" & Rows.Count).End(xlUp).Row 
 *'  this is where I get the first error msg, also =rngCust.End(xlUp).Row does not get an error here
  but I still get the one below*

Set wb = ThisWorkbook
Set ws = wb.Worksheets("Billing")
Set rngBilling = ws.Range("rngBilling")
Set erps = wb.Worksheets("ERP Summary")
Set rngERPsumm = erps.Range("rngERPsumm")
Set rngCust = ws.Range("rngCust")

UserForm1.Show *'show user form- this works, the user form comes up*

For Each cust In rngCust.Columns(1).Cells        
*'This is the command for the start of the loop- to look at a cell in each row of the 
first column of the range*

*'below is the user form part which is just as shown, right after the start of the loop:*

pctCompl = cust / lastrow *'measure of progress, this is the second error msg, also tried '=cust/rngCust with no luck; i have not been able to get any further to even know if the rest of the code will work*

With UserForm1
    UserForm1.Text.Caption = pctCompl & "% Completed"
    UserForm1.Bar.Width = pctCompl * 2
End With

DoEvents
*'then it continues into the main body of the macro and the first IF statement, which creates an invoice for the customer, saves and closes the invoice and moves on to the next cust cell in the range*
If statement
    IfElse
    IfElse
Else
End If
Next cust
Unload UserForm1

End Sub

Я хочу изучить это и иметь возможность изменять его для других макросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...