You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Excel单元格达到指定值时自动播放成就视频?

实现Excel单元格达标时自动播放成就视频的VBA方案

嘿,你已经摸到了实现功能的门儿啦!不过原代码里还有几个小细节需要调整,我来帮你把整个流程捋顺,让它完美跑起来:

一、先修正原代码的核心问题

你的初始代码里If e2 = 30 Then这一行没有明确指定单元格的归属(比如是哪个工作表的E2),而且缺少了避免事件循环触发的关键设置,这会导致代码可能重复执行或者报错。我们来一步步完善。

二、完整可运行的VBA代码

1. 工作表变更事件(必须放在目标工作表的代码模块中)

打开Excel后按下Alt + F11进入VBA编辑器,找到你存放统计数据的工作表(比如Sheet1),双击打开它的代码窗口,粘贴以下代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    ' 先禁用事件,防止代码执行时再次触发Worksheet_Change导致无限循环
    Application.EnableEvents = False
    
    ' 检查变更的单元格是否在你命名的"dietdays"区域内
    If Not Intersect(Target, Me.Range("dietdays")) Is Nothing Then
        ' 调用检查成就的子过程
        CheckDietAchievement
    End If
    
    ' 任务完成后重新启用事件
    Application.EnableEvents = True
End Sub

2. 检查成就并播放视频的子过程

同样在这个工作表的代码模块中,粘贴以下内容:

Private Sub CheckDietAchievement()
    Dim targetDays As Integer
    Dim videoPath As String
    
    ' 获取"dietdays"区域的数值(假设这个命名区域是单个单元格,比如E2)
    targetDays = Me.Range("dietdays").Value
    
    ' 替换成你实际的成就视频路径,支持MP4、AVI等常见格式
    videoPath = "E:\1\30_diet_achievement.mp4"
    
    ' 判断是否达到30天成就
    If targetDays = 30 Then
        ' 弹出激励提示框
        MsgBox "做得好!已坚持30天饮食!您现在是饮食入门者!", vbInformation
        
        ' 调用系统默认播放器打开视频(简单直接,无需额外设置)
        Shell "cmd /c start """" """ & videoPath & """", vbNormalFocus
        
        ' 如果你想在Excel窗口内嵌入播放视频,可以用下面的代码(需先添加控件)
        ' 步骤:开发工具→附加控件→勾选"Windows Media Player",取消下面的注释即可使用
        ' Dim wmp As Object
        ' Set wmp = CreateObject("WMPlayer.OCX.7")
        ' wmp.URL = videoPath
        ' wmp.controls.play
    End If
End Sub

三、关键细节提醒

  • 确认命名区域:确保你已经正确创建了dietdays命名区域,指向存放饮食天数的单元格(比如E2)。可以通过Excel「公式」选项卡→「定义名称」来创建或检查。
  • 视频路径注意事项:路径里的反斜杠要保留,要是路径里有空格,代码里的引号已经帮你处理好了,直接替换成你的视频路径就行。
  • 避免循环触发:代码开头的Application.EnableEvents = False是重中之重,不然代码执行时可能会反复触发Worksheet_Change事件,导致Excel卡死。

四、扩展小技巧(多成就场景)

如果以后想加60天、90天的成就,可以把判断逻辑改成这样,轻松扩展:

Select Case targetDays
    Case 30
        videoPath = "E:\1\30_diet.mp4"
        MsgBox "做得好!已坚持30天饮食!您现在是饮食入门者!", vbInformation
    Case 60
        videoPath = "E:\1\60_diet.mp4"
        MsgBox "太棒了!已坚持60天饮食!您现在是饮食进阶者!", vbInformation
    Case 90
        videoPath = "E:\1\90_diet.mp4"
        MsgBox "超级厉害!已坚持90天饮食!您现在是饮食达人!", vbInformation
End Select

' 如果有对应成就视频,就播放
If videoPath <> "" Then
    Shell "cmd /c start """" """ & videoPath & """", vbNormalFocus
End If

这样每次达标不同天数,都会自动播放对应视频+弹出激励提示,完美契合你的激励需求~

内容的提问来源于stack exchange,提问作者chickflick91

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:14:58