我正在从带有加载栏的表单中运行以下代码,它运行良好...当大约有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
有谁知道如何防止冻结此表格?
如果我还需要在此处添加或澄清,请告知我们......我想我可能已经涵盖了我遇到问题的所有问题。
答案 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