提示:其它语言是由 Google 机器翻译的。 你可以访问 English 版本。
登录
x
or
x
x
马上登记
x

or

如何在Excel中满足条件时播放声音?

在Excel中,我们可以应用条件格式来格式化和突出显示单元格以满足您所需的条件,但是,有时您可能想要在满足条件时播放声音。 例如,如果A1中的单元格值大于300,我想播放一个声音。 Excel不支持此功能,本文将介绍一些VBA代码来解决此任务。

使用VBA代码播放基于单元格值的默认系统蜂鸣声

使用VBA代码播放基于单元值的自定义声音

如果单元格值在VBA代码的特定列中发生变化,请播放声音


箭头蓝色右泡 使用VBA代码播放基于单元格值的默认系统蜂鸣声

这里有一个方便的代码,可以让您在满足特定条件时播放默认系统哔声,请按照以下步骤操作:

1. 按住 ALT + F11 键,然后打开 Microsoft Visual Basic for Applications 窗口。

2。 点击 插页 > 模块,并将以下代码粘贴到 模块 窗口。

VBA代码:根据单元格值播放默认的系统哔声:

Function BeepMe() As String
    Beep
    BeepMe = ""
End Function

3。 然后保存并关闭此代码窗口,返回工作表并输入此公式: = IF(A1> 300,BeepMe(), “”) 进入单元格旁边的空白单元格,其中包含要播放声音的值,然后按 输入 键,公式单元格中将不显示任何内容,请参阅截图:

doc播放声音如果条件真1

4。 现在,如果在单元格A1中输入的值大于300,将播放默认的系统哔声。


箭头蓝色右泡 使用VBA代码播放基于单元值的自定义声音

如果你想播放一些其他声音而不是默认的系统哔声,这里还有一个VBA代码可以帮你一个忙。

1。 按住 ALT + F11 键,然后打开 Microsoft Visual Basic for Applications 窗口。

2. 点击 插页 > 模块,并将以下代码粘贴到 模块 窗口。

VBA代码:根据单元格值播放特定的声音:

#If Win64 Then
    Private Declare PtrSafe Function PlaySound Lib "winmm.dll" _
        Alias "PlaySoundA" (ByVal lpszName As String, _
        ByVal hModule As LongPtr, ByVal dwFlags As Long) As Boolean
#Else
    Private Declare Function PlaySound Lib "winmm.dll" _
        Alias "PlaySoundA" (ByVal lpszName As String, _
        ByVal hModule As Long, ByVal dwFlags As Long) As Boolean
#End If
Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_FILENAME = &H20000
Function SoundMe() As String
'Updateby Extendoffice 20161223
    Call PlaySound("c:\windows\media\Speech On.wav", _
      0, SND_ASYNC Or SND_FILENAME)
    SoundMe = ""
End Function

3。 然后保存并关闭此代码窗口,返回工作表并输入此公式: = IF(A1> 300,SoundMe(), “”)进入单元格旁边的空白单元格,其中包含要播放声音的值,然后按 输入 键,公式单元格中将不显示任何内容,请参阅截图:

doc播放声音如果条件真2

4。 从现在起,如果在单元格A300中输入的值大于1,则会立即播放特定的声音。

笔记:在上面的代码中,您可以将声音wav文件更改为您的需要 C:\ WINDOWS \媒体\ 文件路径。 看截图:

doc播放声音如果条件真3


箭头蓝色右泡 如果单元格值在VBA代码的特定列中发生变化,请播放声音

如果要在特定列中的单元格值发生变化时播放声音,则可以应用以下VBA代码。

1。 在列中更改值时,右键单击要播放声音的工作表选项卡,然后选择 查看代码 从上下文菜单中,并在打开 Microsoft Visual Basic的应用程序 窗口中,将以下代码复制并粘贴到空白模块中:

VBA代码:如果单元格值在列中更改,请播放声音:

Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice 20161223
Dim xCell As Range
On Error Resume Next
If Target.Columns.Count = 1 Then
  If Intersect(Target, Columns(3)) Is Nothing Then
    Exit Sub
  Else
    For Each xCell In Columns(3)
        On Error Resume Next
        If (xCell.Value = Target.Value) And (xCell.Value <> "") Then
          Beep
          Exit For
        End If
     Next
  End If
End If
End Sub

doc播放声音如果条件真4

注意:在上面的代码中,数字 3 在脚本中 列(3) 是当此列中的值发生变化时要播放声音的列号。

2。 然后保存并关闭此代码窗口,现在,如果单元格值在第三列中更改,则会播放默认的系统哔声。


Kutools for Excel - 最佳办公生产力工具提高80%的生产力

  • 重用: 快速插入 复杂的公式,图表 以及你以前用过的任何东西; 加密单元格 密码; 创建邮件列表 并发送电子邮件...
  • 超级方程式酒吧 (轻松编辑多行文字和公式); 阅读布局 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不丢失数据; 分裂细胞含量; 组合重复的行/列...防止重复的细胞; 比较范围...
  • 选择复制或唯一 行; 选择空行 (所有细胞都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择......
  • 精确复制 多个单元格而不更改公式参考; 自动创建参考 多张表; 插入项目符号,复选框等等......
  • 提取文本,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级过滤器 (将过滤方案保存并应用到其他工作表); 高级排序 按月/周/日,频率等; 特殊过滤器 用粗体,斜体......
  • 结合工作簿和工作表; 根据键列合并表; 将数据拆分为多个表格; 批量转换xls,xlsx和PDF...
  • 超过300强大的功能。 支持Office / Excel 2007-2019和365。 支持所有语言。 在您的企业或组织中轻松部署。 全功能60天免费试用。
kte tab 201905

Office选项卡为Office提供选项卡式界面,使您的工作更轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,Publisher,Access,Visio和Project。
  • 在同一窗口的新选项卡中打开并创建多个文档,而不是在新窗口中。
  • 通过50%提高您的工作效率,每天为您减少数百次鼠标点击!
官方底部
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Marcelo · 15 days ago
    Hi adm. I am trying to create, via VBA, an "IF" command which would sound an specifc sentence when a pre determined condition is reached. Could you help me, please?
  • To post as a guest, your comment is unpublished.
    Marcelo · 15 days ago
    Hi adm. I am trying to create, via VBA, an "IF" command which would sound an specifc sentence when a pre determined condition is reached. Could you help me, please?
  • To post as a guest, your comment is unpublished.
    devraj · 2 months ago
    code is not working what i can do
  • To post as a guest, your comment is unpublished.
    Shehzad · 7 months ago
    Hey admin, please tell , if i want to save sound file in excel file and i will open my excel file in any computer , can i hear that sound ???
    • To post as a guest, your comment is unpublished.
      skyyang · 7 months ago
      Hello, Shehzad,
      If you apply the first and third VBA code to play a default system beep sound, the sound can be hear from any other computer. But, with the second vba code, you should set the custom sound to your need.

      Note: You should save the workbook as Excel Macro-Enabled Workbook format.
  • To post as a guest, your comment is unpublished.
    Excelakos · 2 years ago
    Hi there
    I try to use the Play a custom sound based on cell value with VBA code but i have a problem. Here is an example:
    I have a time countdown in cell A1 which means value changes per second.
    Then in cell B1 i have inserted =8/(24*60) in a 0:08:00 format
    So the if i use to trigger the sound is if B1>A1,SoundMe(),""
    But the sound will never be heard. I can hear a sound like something is looping and i guess it has something to do with the fact that the value is dynamically changing.
    Then i tried to alter the code in the part Call PlaySound("c:\windows\media\Speech On.wav", _
    0, SND_ASYNC Or SND_FILENAME)
    I changed SND_ASYNC with SND_SYNC.

    This way i managed to play the sound, but it gets repeating forever.

    Is there any solution like to trigger the sound only once meaning just the very first time the criteria is met and then stop ??
    Thank you a lot