黑客帝国里的经典一幕,形象地把代码流展示到屏幕上,让你感觉到数据变化有多么神奇。
严格来说,任何编程语文都可以实现这个场景,本节介绍一下,通过VBA代码实现的基本思路。
实现效果如下图所示,没有展示动态图片,感觉还有点不尽人意。
由于,动画不是十分连贯,总是少了一些感动。
如果哪位实现了更加平滑的效果,欢迎留言。
本示例通过Application对象的一些方法来实现,动态效果。
显示内容为26个英文大写字母,当然也可以换成任意喜欢的字符,0或1也是可以的。
如:
- Application.Ontime()"等待几秒执行程序
- Application.Wait()"暂停程序
下面参考一下具体代码:
Public zArr(25)"定义存放字母数组
Public isTrue As Boolean
Public r As Range
Public Sub setValue()
If isTrue Then Exit Sub
Dim zi As Integer, ri As Integer, ci As Integer, xi As Integer, rxi As Integer
zi = VBA.Int((25 - 0 + 1) * VBA.Rnd) + 0
ci = VBA.Int((25 - 1 + 1) * VBA.Rnd) + 1
xi = VBA.Int((20 - 1 + 1) * VBA.Rnd) + 1
For ri = 1 To xi
For rxi = 1 To xi - ri
zi = VBA.Int((25 - 0 + 1) * VBA.Rnd) + 0
ActiveSheet.Cells(ri, ci).Item(rxi).Value = zArr(zi)
Next rxi
If ri > 1 Then ActiveSheet.Cells(ri, ci).Offset(-1, 0).ClearContents
Application.Wait (Now + TimeValue("00:00:01"))
DoEvents
Next ri
DoEvents
Application.OnTime Now() + TimeValue("00:00:01"), "setValue"
End Sub
上述代码为实现动态效果的过程,存放在模块中。
这里需要做些的变量设置,本示例为26个大写字母,设置方法如下代码:
Dim zChr As Integer, zi As Integer
zColor = 9
For zChr = 65 To 90
zArr(zChr - 65) = VBA.Chr(zChr)
Next zChr
其中,zArr就是存放字母的数组变量。
按钮完整代码
Private Sub CommandButton1_Click()
isTrue = False"设置终止程序条件变量
Application.DisplayAlerts = False
Dim zColor As Integer
Dim zChr As Integer, zi As Integer
zColor = 9
For zChr = 65 To 90
zArr(zChr - 65) = VBA.Chr(zChr)
Next zChr
Set r = ActiveSheet.Range("A1").Resize(20, 26)
With r
.Interior.Color = 1
.Font.Color = RGB(12, 255, 12)
End With
If Not isTrue Then setValue
Application.DisplayAlerts = True
End Sub
代码中还有一个关键变量isTrue,是跳出循环的一个布尔变量,没有这个变量,程序会变成一个无限循环,结果就是一直循环出不来。
isTrue定义成全局变量,存放位置在模块中,Public isTrue as Boolean
整合完成就可以调试效果了。
总的来说,并不如其它代码实现效果好,如果用JS就十分可观了。
但是,主要是对整个过程的思路进行一下探索,并没有太高尚的意义。
欢迎关注、收藏
---END---