我似乎无法解决为什么这不起作用。我希望每个A用户窗体中的标签增加宽度。
但是当我运行它时,其余的子程序将不会运行,直到表单关闭。我怎么能阻止这个?
Sub movepost()
Dim a As Range
Dim rcount As Long
Dim load As Variant
Dim load1 As Variant
Dim width As Variant
width = fmLoadingBar.Label1.width
For Each a In Range("a2:A9999")
If a.Value = "" Then
rcount = a.Row
End If
Next a
DoEvents
fmLoadingBar.Show
rcount = (rcount - 1) * 12
load = width / rcount
fmLoadingBar.Label1.width = 0
For Each a In Range("A2:l9999")
If a.Column = 1 Then
ElseIf a.Column = 6 Then
ElseIf a.Column = 7 Then
ElseIf a.Column = 11 Then
ElseIf a.Value = "" Then
a.Value = a.Offset(0, -1).Value
ElseIf a.Value = "" And a.Offset(1, 0).Value = "" And a.Offset(1, 0).Value = "" And a.Offset(1, 0).Value = "" Then
Exit For
End If
load1 = load1 + load
fmLoadingBar.Label1.width = load1
Next a
Unload fmLoadingBar
End Sub
答案 0 :(得分:1)
您的表单没有参数显示,因此默认为模式表单。您需要一个非模态形式,这意味着子将继续而不等待表单卸载。试试这个:
fmLoadingBar.Show vbModeless
循环可能不会给程序(Excel)时间做其他事件然后你要求它(例如在屏幕上绘制图形,或听鼠标滚动等)。让Excel环顾四周#39;对于在循环中执行的其他事件,您可以在循环中使用DoEvents
。但要注意,因为它会在性能上花费你。先没有它进行测试。