文/江觅
一直想做一个动态效果,但找不到好的方法,可能是对于vba认识不足,没有实现。在一个偶然情况下,发现可以模拟工业动态效果,做出来还是有一点点欣赏成分。
达不到流畅的动画效果,但对于实现动态过程模拟,还是可以接受的。毕竟不是专业软件,这样做没有实际意义价值,如果有,那也只能对vba学习起到一个灯锻炼的目的。

工业过程监控软件相对专业性强,系统配置也比较麻烦,而且不是经常做很难,特别是一些通信问题,由于各种设备通信协议不同,解决起来相对复杂。这也是作为工控比较辛苦的一个难点,但是工业自动化减少了相当多劳动力,也加快了生产经营进度,缩减生产成本。如此好的事情,完全有必要紧跟节奏步伐。工控辛苦那是必然应得。
这个例子模拟了一个液位的上升过程中状况,设置了高位、低位报警,液位用颜色来标识,超过报警值就变成红色,正常值为蓝色,同时有文字提示,文字也有不同颜色提示。
一般工业应用就是如此过程,到了设定位报警,连锁控制就启动装置。这里没有做连锁装置,简简单单一个图,代码有点乱。做了连锁更乱,本例只作为实现一个模拟应用,没有实际价值。
代码完全是属性值变化,没有逻辑判断等跳转,感觉就是傻瓜式赋值,没有太大难度,最大的难度就是在恰当的地方赋予适当的值。
液位动态变化函数
Public Sub SetV() '''动态变化函数With UserForm1.Label2If .Height >= 100 Then.BackColor = RGB(202, 21, 21).Height = 100.Parent.Label4.Caption = "100%"Exit SubEnd IfIf .Height < 30 Or .Height > 60 Then.BackColor = RGB(202, 21, 21).Parent.Label9.Caption = "液位超限".Parent.Label9.ForeColor = RGB(202, 21, 21)FlashColorEnd IfIf .Height > 30 And .Height < 60 Then.BackColor = RGB(20, 212, 212).Parent.Label9.Caption = "液位正常".Parent.Label9.ForeColor = RGB(20, 212, 212)Application.OnTime Now + TimeValue("00:00:01"), "FlashColor", , FalseEnd If.Height = .Height + 10.Top = .Top - 10.Parent.Label4.Caption = .Parent.Label2.Height & "%"End WithApplication.OnTime Now + TimeValue("00:00:01"), "SetV" '''循环调用本函数End Sub
关键代码是一个时间控制执行过程,研究这个费了一些时间,以前使用没感觉有难度,这些做有点小问题,一直没解决,直到写完,好像依然没有解决。不过,想要的功能算是实现了。
滚动条代码
Private Sub ScrollBar1_Change()With Me.Label2.Height = 1 - Me.ScrollBar1.Value.Top = 229 + Me.ScrollBar1.ValueIf .Height > 30 And .Height < 80 Then.BackColor = RGB(20, 212, 212)Me.Label9.Caption = "液位正常"Me.Label9.ForeColor = RGB(20, 212, 212)End IfIf .Height > 80 Or .Height < 30 Then.BackColor = RGB(222, 20, 1)Me.Label9.Caption = "液位超限"Me.Label9.ForeColor = RGB(202, 21, 21)End IfEnd WithMe.Label4.Caption = Me.Label2.Height & "%"If Me.Label4.Caption = "101%" Then Me.Label4.Caption = "100%"End Sub
真不知道做这个有什么意义,但还是费了点心思做了出来,人就是这么奇怪,当你以为某件事情十分重要的时候,却不知道如何去面对,反而对于心不在焉的事情投入热情,这就有点不可思议了。
正如,有些人,你对她万分喜爱,然而却常常不知道如何来表达这种喜爱,做出一些不正常的事情来,往往也得不到想要的回报,然后就不能喜欢应该去喜欢的人了 。
这就是说,有些人把大多数时间浪费在没有意义的事情上,最后得出一个结论,这个世界真TM没有意思。