每次循环嵌套 10 次,共计 1000 多个循环

每次循环嵌套 10 次,共计 1000 多个循环

我对这个问题感到非常困惑,我有一个嵌套的 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

您没有显示所有代码。例如,我假设 thstiProgress是全局定义的,但我们在这里看不到。

另外,为什么要DIM在循环内执行语句?你应该只执行一次,并且你应该nothing在执行完它们后设置对象变量。不这样做可能会导致一些严重的内存问题。

回答具体问题。您已将其设置iProgress为计数器,而不是 %。

要获取百分比,您需要知道在启动进度条之前要迭代的项目数。然后您需要当前项目计数器和总数。CurrentCount/TotalItemCount为您提供进度。

相关内容