形成背景颜色灰度测序

时间:2018-02-25 15:51:55

标签: excel excel-vba vba

我在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

1 个答案:

答案 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函数

More information