在列中输入数据后,在excel中播放声音

时间:2019-02-22 01:08:14

标签: excel vba audio

我要在excel中输入序列号,我已经启用了数据验证,并且可以正常运行。但是,大多数在扫描时使用系统的用户都会听到蜂鸣声,即使扫描器没有将数据输入到单元格本身,也只是走自己的路,这会导致扫描遗漏。我正在尝试为整个列获取一个简单的VBA或公式,当将数据输入该列时,它将发出默认的Windows声音,让用户知道数据已成功输入到该单元格中。任何帮助将不胜感激,谢谢您提前。请记住,我尝试使用= If(B3> 30,BeepOnce(),“”)之类的值,但是我们的序列号同时包含字母和数字,即 G18BB0070988019282

1 个答案:

答案 0 :(得分:1)

将其放在工作表的模块中,以监视B列中的任何更改。
根据更改值的长度,它会播放不同的声音:

  1. 标准Excel VBA Beep,结果可能有所不同!
  2. 具有可变频率和持续时间的API调用Beep
  3. Excel Speech.Speak,如果已安装语音功能

具有所有3个变体的代码:

Option Explicit

Private Declare PtrSafe Function KernelBeep Lib "kernel32" Alias "Beep" _
   (ByVal dwFreq As Long, _
    ByVal dwDuration As Long) As Long

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim MonitoredArea As Range
    Set MonitoredArea = Intersect(Target, Me.Range("B:B"))
    If Not MonitoredArea Is Nothing Then
        If Len(Target.Value) > 10 Then
            'Beep                   ' Excel VBA Standard
            KernelBeep 4000, 100    ' frequency, duration
            'Application.Speech.Speak "ok", True
        Else
            KernelBeep 600, 100
            KernelBeep 600, 100
            KernelBeep 600, 100
            'Application.Speech.Speak "a", True
        End If
    End If
End Sub