我在excel中有一个名为grayForm的表单,我想自动更改灰度级以进行光度数据采集。我写了下面的代码,但它没有显示灰度级颜色变化,直到它完成 - 也就是说,当达到红色灰度级255时。改变'睡眠'等待时间并没有帮助。但是,当我按照所示插入“停止”并手动继续时,它会逐步执行“for循环”,灰度级变化很好,所以代码似乎是正确的。需要进行哪些代码更改/添加才能在没有“停止”中断的情况下进行更改?
Private Sub CommandButton1_Click()
cOffset = 4
grayForm.Show 0
grayForm.TextBox1.BackColor = RGB(0, 0, 0)
For i = 0 To 16
temp1 = Str(i + cOffset)
temp1 = Replace(temp1, Chr(32), "") 'Remove space " "
nGray = Cells(i + cOffset, "B") 'reads values 0, 17, 31, ... 255 from column B
Range(temp).Select: ActiveCell.Value = nGray
grayForm.BackColor = RGB(nGray, 0, 0)
'Stop
Sleep 200 ' millisecond delay
Next i
End Sub
答案 0 :(得分:3)
将Stop
替换为DoEvents
。
DoEvents
将允许Excel“重绘”自身。 Sleep()
停止执行,这可能就是为什么你甚至看不到重绘的原因。
所以试试这个:
For i = 0 To 16
temp1 = Str(i + cOffset)
temp1 = Replace(temp1, Chr(32), "") 'Remove space " "
nGray = Cells(i + cOffset, "B") 'reads values 0, 17, 31, ... 255 from column B
Range(temp).Select: ActiveCell.Value = nGray
grayForm.BackColor = RGB(nGray, 0, 0)
DoEvents
Next i
DoEvents
函数