计算后形成冻结

时间:2018-03-28 20:45:15

标签: vba excel-vba excel

我正在从带有加载栏的表单中运行以下代码,它运行良好...当大约有6000行时,但当它到达第8000行标记时,表单会冻结。它最终会完成每一行的过程,但它不会更新我实现的进度条。

我尝试从Mod范围内的几个不同数字更改5 to 500值,但仍然会在第8000行附近冻结。

With ActiveSheet
      For i = 2 To LR
         Set newASN = New cASN

         If (i Mod 500) = 0 Then
            frmMainMenu.frameBar.Width = (i / LR) * 100
            frmMainMenu.labelPctComplete.Caption = Int((i / LR) * 100) & "%"
            frmMainMenu.labelTotalASNnum.Caption = i
            frmMainMenu.Repaint
         End If

         For j = 1 To LC
            AddData newASN, j, .Cells(i, j).value
         Next j
         ASN_COL.Add newASN
      Next i
         frmMainMenu.frameBar.Width = 100
         frmMainMenu.labelPctComplete.Caption = "100%"
         frmMainMenu.labelTotalASNnum.Caption = i - 1
   End With

有谁知道如何防止冻结此表格?

如果我还需要在此处添加或澄清,请告知我们......我想我可能已经涵盖了我遇到问题的所有问题。

1 个答案:

答案 0 :(得分:0)

想出来......我在DoEvents的电话中添加了,这似乎阻止了屏幕冻结! :)

With ActiveSheet
      For i = 2 To LR
         Set newASN = New cASN

         If (i Mod 500) = 0 Then
            frmMainMenu.frameBar.Width = (i / LR) * 100
            frmMainMenu.labelPctComplete.Caption = Int((i / LR) * 100) & "%"
            frmMainMenu.labelTotalASNnum.Caption = i
            frmMainMenu.Repaint
            DoEvents    'Added the line here
         End If

         For j = 1 To LC
            AddData newASN, j, .Cells(i, j).value
         Next j
         ASN_COL.Add newASN
      Next i
         frmMainMenu.frameBar.Width = 100
         frmMainMenu.labelPctComplete.Caption = "100%"
         frmMainMenu.labelTotalASNnum.Caption = i - 1
   End With