每2次更改用户窗体颜色
大家好,使用VBA,有没有一种方法可以每隔20ms左右更改用户窗体的颜色,从而生成一个闪烁、多色的更改窗体。我只是在工作中做一个笑话程序,希望用户表单能够快速更改颜色,比如聚会/庆祝/焰火。。 你可以尝试这样的方式,但请注意,必须等到“焰火”完成后才能与表单交互。
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub UserForm_Activate()
Dim listColors As Variant
Dim waitTime As Variant
Dim index As Integer
listColors = Array(&HFF&, &H80FF&, &HFFFF&, &HFF00&, &HFFFF00, &HFF0000, &HFF00FF)
For index = 0 To UBound(listColors)
UserForm1.BackColor = listColors(index)
UserForm1.Repaint
Sleep 20
Next index
End Sub 嘿Mircea,
谢谢,效果很好。我现在确实想在整个事情上添加一个循环,这样它就会循环,直到用户关闭表单,但我相信我能解决这个问题。谢谢你的密码 完全欢迎你。
关于连续循环,请注意,它可能会迫使用户使用以关闭表单。我不确定在执行“焰火”时是否可以触发其他事件(即按下按钮)。 是的,我就是这么想的。我正在考虑添加一个错误陷阱,它接受ESC作为陷阱或循环的取消,但这让我有些挠头。这是一种方法吗?
我只是想说谢谢你在帖子标题中加入“VBA”(所以我知道不要通读整个帖子来找出答案),尤其是因为论坛反馈中的这个帖子没有得到任何吸引力。 不用担心,我想最好还是说清楚
干杯伙计 嘿Mircea(或任何其他可以帮助的人)
我已经将代码适应了这一点,它适用于我需要的东西,除了一件事-循环改变了label1和userform的颜色,但是它们并不同步-我希望标签的颜色每次改变颜色时都与表单相同。。
有什么想法吗?
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub UserForm_Activate()
Dim listColors As Variant
Dim waitTime As Variant
Dim index As Integer
Dim counter
medalform.BackColor = &H800000
Label1.BackColor = &H800000
counter = 1
listColors = Array(&HFF&, &H80FF&, &HFFFF&, &HFF00&, &HFFFF00, &HFF0000, &HFF00FF)
Do While counter < 5
counter = counter + 1
For index = 0 To UBound(listColors)
medalform.BackColor = listColors(index)
medalform.Repaint
Label1.BackColor = listColors(index)
Sleep 200
Next index
Loop
medalform.BackColor = &H800000
Label1.BackColor = &H800000
End Sub 您应该在更改标签的颜色之后而不是之前调用重新绘制方法。
页:
[1]
2