提示:其他語言是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。 支持所有語言。 在您的企業或組織中輕鬆部署。 全功能30天免費試用。
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.
    dgesa · 20 days ago
    Quando colo essa formula recebo um erro, como se estivesse faltando valor entra as aspas = IF (A1> 300, BeepMe (), "")
  • To post as a guest, your comment is unpublished.
    a · 2 months ago
    Nice.

    Thanks
  • To post as a guest, your comment is unpublished.
    Marcelo · 3 months 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 · 3 months 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 · 4 months ago
    code is not working what i can do
  • To post as a guest, your comment is unpublished.
    Shehzad · 10 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 · 10 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