Excel 2013滚动字幕实现:替代Microsoft Web Browser Control的VBA代码
Excel 2013/2016 滚动字幕(Marquee Text)VBA实现方案
最近在Excel 2013里做滚动字幕的时候踩了个坑:Microsoft Web Browser Control在2013和2016版本里没法正常工作。折腾了半天,终于用VBA实现了单元格内的滚动字幕效果,直接上代码和说明:
完整VBA代码
Sub DoMarquee() Dim sMarquee As String Dim iWidth As Integer Dim rCell As Range Dim iCurPos As Integer ' 自定义滚动的文本内容 sMarquee = "This is a scrolling Marquee." ' 设置单元格一次显示的字符数(根据列宽调整更合适) iWidth = 10 ' 指定显示滚动字幕的目标单元格(这里用Sheet1的A1举例) Set rCell = Sheet1.Range("A1") ' 正向滚动逻辑 For iCurPos = 1 To Len(sMarquee) - iWidth + 1 rCell.Value = Mid(sMarquee, iCurPos, iWidth) ' 控制滚动速度:数值越小滚得越快,0.2秒是比较适中的速度 Application.Wait Now + TimeValue("00:00:00.2") Next iCurPos ' 反向滚动(可选,不需要的话可以删掉这部分) For iCurPos = Len(sMarquee) - iWidth + 1 To 1 Step -1 rCell.Value = Mid(sMarquee, iCurPos, iWidth) Application.Wait Now + TimeValue("00:00:00.2") Next iCurPos ' 如果要持续循环滚动,把上面的代码包进Do Loop里就行 ' Do ' ' 正向滚动代码段 ' ' 反向滚动代码段 ' Loop End Sub
关键部分说明
sMarquee:直接替换成你需要滚动的文本内容就行,比如通知、提示语之类的。iWidth:决定了单元格一次能显示多少个字符,建议根据目标单元格的列宽调整这个数值,避免显示不全。rCell:指定滚动字幕要显示的单元格,这里用的是Sheet1的A1,你可以改成任意单元格(比如Sheet2.Range("B5"))。Mid函数:这是实现滚动的核心——不断改变文本截取的起始位置,让内容看起来“动”起来。Application.Wait:用来控制滚动速度,要是觉得慢就把时间改小(比如00:00:00.1),快了就调大。
小提示
- 如果需要持续循环滚动,把正向+反向的代码块放进
Do...Loop里就行,但记得加个停止条件(比如按快捷键或者插个按钮触发停止),不然宏会一直跑。 - 运行宏之前,确保Excel的宏安全设置允许启用宏,不然代码没法运行。
- 可以给目标单元格设置个醒目的格式(比如加粗、变色),让滚动字幕更显眼。
内容的提问来源于stack exchange,提问作者omprakash
相关产品推荐
相关产品推荐

