问题:VBA, 如何时间文本滚动的效果?
- 一般来说,从左向右或从右向左的走马灯效果比较常见
- 还想做一下,上下滚动的效果
- 这个我自己完全没思考,网上查了很多实现方法,学着实现下
思路最重要
- 多种思路,解决问题,从起点,到终点,观察差别,思考路径
- 分析起点,分析终点,拟合两者
- 多用几种方法开阔思路
方法1 使用典型的文本改变思路
- 主函数:显示文本和改变文本
- delay1函数:实现delay效果
- stop1函数:控制函数,因为主函数不关闭,实现
- 写法
- Range("a1") = Right(Range("a1"), Len(Range("a1")) - 1) & Left(Range("a1"), 1)
- Range("a1") = mid(Range("a1"), 2,Len(Range("a1")) - 1) & Left(Range("a1"), 1)
- Len(Range("a1"))- 1)千万别写错成 Len(Range("a1")- 1))
换成"bb = Right(bb, Len(bb) - 1) & Left(bb, 1)"
上下的利用换行来做?,还是把文本显示为竖条的,换前后呢?
dim x
Sub WordsRoll()
x = 1
Range("a1") = "测试这句话的滚动效果"
Do
Range("a1") = Right(Range("a1"), Len(Range("a1")) - 1) & Left(Range("a1"), 1)
delay1 (0.1)
Loop Until x = 0
End Sub
Sub delay1(t)
time1 = Timer()
Do
DoEvents
Loop While Timer() < (time1 + t)
End Sub
Sub stop1()
x = 0
End Sub
方法2:如果可以识别窗体和控件的长宽,利用这个
思路:往字符串里添加空格?
https://zhidao.baidu.com/question/546331261.html
还要禁止换行?
http://www.exceltip.net/thread-33847-1-1.html
参考文档
https://www.jianshu.com/p/99840a95f7ed
http://www.360doc.cn/mip/728196438.html
http://www.excelpx.com/thread-313255-1-1.html
http://www.excelpx.com/thread-198101-1-1.html
http://www.exceltip.net/thread-33847-1-1.html
Private Sub Label1_Click()
End Sub
'------------------走马灯------------------------------
Private Sub UserForm_Activate()
Dim bb As String
kk = False
Label1.WordWrap = False
bb = Label1
Do
If kk = True Then Exit Sub
' bb = Right(bb, 1) & Left(bb, Len(bb) - 1)
' bb = Right(bb, Len(bb) - 1) & Left(bb, 1)
bb = Right(bb, Len(bb) - 1) & Left(bb, 1)
Label1 = bb
vv = Timer
Do While Timer < vv + 0.1
DoEvents
Loop
Loop
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
kk = True
End Sub
Private Sub Label1_Click()
End Sub
'------------------走马灯------------------------------
Private Sub UserForm_Activate()
Dim bb As String
kk = False
Label1.WordWrap = False
bb = Label1
Do
If kk = True Then Exit Sub
' bb = Right(bb, 1) & Left(bb, Len(bb) - 1)
' bb = Right(bb, Len(bb) - 1) & Left(bb, 1)
bb = Right(bb, Len(bb) - 1) & Left(bb, 1)
Label1 = bb
vv = Timer
Do While Timer < vv + 0.1
DoEvents
Loop
Loop
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
kk = True
End Sub