Я серьезно ошарашен этой проблемой, у меня есть вложенный цикл for-next, который дает более тысячи циклов, которые я знаю по просмотру этого кода:

'find row ranges for department 1-10
    For i = 1 To 10 Step 1
        Dim tempRange As Range
        Set tempRange = GetRowRange(importsheet, DepColumn, i)
        'and iterate through the columns to insert them
        ' find row ranges for section
        If Not (importsheet.UsedRange.Find("afdeling_" & i) Is Nothing) Then
            Dim SecColumn
            Dim secRange As Range
            SecColumn = importsheet.UsedRange.Find("afdeling_" & i).column
            Set bCell = tempRange.Columns(SecColumn)
            tempRange.Sort Key1:=bCell, Order1:=xlAscending, Header:=xlYes
            For ix = 1 To 10 Step 1
                'check for a valid section column
                Set secRange = GetRowRange(tempRange, SecColumn, ix)
                totalposts = totalposts + IterateColumns(secRange, spgsheet, importsheet, debugsheet, year, month, week, Hospital, i, ix, varType, False)
                Progress
            Next ix
        Else
        totalposts = totalposts + IterateColumns(tempRange, spgsheet, importsheet, debugsheet, year, month, week, Hospital, i, 0, varType, False)
        End If
        Progress
    Next i

Моя функция прогресса выглядит так:

Function Progress()
iProgress = iProgress + 1
Application.StatusBar = Format(iProgress, "0%") & " Completed"
End Function

но индикатор выполнения часто показывает до 3300%.

Как это вообще возможно?

1 ответ1

2

Вы не показываете весь код. Например, я предполагаю, что iProgress определен глобально, но мы не можем видеть это здесь.

Кроме того, почему вы делаете операторы DIM внутри цикла? Вы должны делать только их один раз , а также вы должны быть настройки переменных объектов nothing , как только вы закончили с ними. Невыполнение этого может привести к некоторым неприятным проблемам с памятью на этом пути.

Чтобы ответить на конкретный вопрос. Вы установили iProgress как счетчик, а не%.

Чтобы получить%, вам нужно знать, сколько элементов вы будете повторять, прежде чем запускать индикатор выполнения. Затем вам понадобится текущий счетчик предметов и сумма. CurrentCount/TotalItemCount дает вам прогресс.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .