我在Excel中有这些非常长的计算。我想转移我的注意力从屏幕上移开,在办公桌前做一些事情,但会在计算完成时提醒您。
有任何想法吗?
我在Excel中有这些非常长的计算。我想转移我的注意力从屏幕上移开,在办公桌前做一些事情,但会在计算完成时提醒您。
有任何想法吗?
Answers:
OK,尝试一下(说明假定为Excel 2007或更高版本):
.XLSM
)。yourbook.xlsm
),然后选择插入→模块。在模块中粘贴以下代码段:
Sub Auto_Open()
Application.OnKey "{F9}", "F9Handler"
End Sub
每次打开SS时,都会重新分配F9键。当您按F9时,它将运行F9Handler
而不是通常的计算。
在模块中,粘贴以下代码段:
Sub F9Handler()
Application.Calculate
Beep
End Sub
现在,当您按下F9时将运行该命令。第一行运行Application.Calculate
(这是F9通常执行的操作),然后发出哔声。
保存一切。
注意:您可能必须启用宏和/或使文档成为“受信任”文档,以确保宏按预期运行。
更多信息:
就像其他人提到的那样,使用beep
Visual Basic(VB)中的命令:
Function beepNow()
Beep
End Function
要获得VB编码,您需要获得Developer tab
可用的代码(请参阅:使开发人员标签可见)
因此,当您更改单元格或条件时,它将发出蜂鸣声。调用上面的VBS代码的示例宏:=IF(C2<>C3,beepNow(),"")
除了将模块放在ss中之外,还可以将其放在Personal.xlsb中。这将使您能够将“哔哔声”提供给任何ss。要运行它,请修改快速访问工具栏或插入按钮/形状以单击ss并将宏分配给它。
@Ƭᴇcʜιᴇ007发布的答案是一个很好的答案,但其他人对此予以评论:该Beep
方法依赖于计算机上的内置扬声器(有时是禁用的),并且不使用扬声器,因此您可能听不到任何声音。
我正在根据该答案发布解决方法。如果涉及的内容较少,我会发表评论。
这就是我在Windows上使用VBA播放声音的方法。它使用普通的计算机扬声器而不是板载扬声器,并且通常使用此Beep
方法禁用扬声器。
从@Ƭᴇcʜιᴇ007的答案开始。只需更改Beep
为:
PlaySound sound_Up
您可以通过sound_Up
以下代码中的SoundType枚举(列表)更改为另一个项目来更改声音,例如sound_Complete
或sound_Notify
。
Option Explicit
' --------------------------------------------------
' --------------------------------------------------
' REQUIRED DLL REFERENCE AND CONSTANTS
' --------------------------------------------------
' Reference to external procedure in DLL to play sounds
#If VBA7 Then
' 64-bit MS Office
Private Declare PtrSafe Function sndPlaySound32bit Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As LongPtr) As LongPtr
#Else
' 32-bit MS Office
Private Declare Function sndPlaySound32bit Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As LongPtr) As LongPtr
#End If
' --------------------------------------------------
' --------------------------------------------------
' CONSTANTS
' --------------------------------------------------
'
Public Const SOUND_DO_NOT_WAIT As String = "&H1"
Private Const SOUND_FILES_PATH As String = "C:\Windows\Media\"
' --------------------------------------------------
' --------------------------------------------------
' PUBLIC ENUMERATIONS
' --------------------------------------------------
'
Public Enum SoundType
sound_None = 0
sound_Up = 1
sound_Down = 2
sound_Attention = 3
sound_Blocked = 4
sound_Boop = 5
sound_Complete = 6
sound_Critical = 7
sound_Ding = 8
sound_Error = 9
sound_Exclamation = 10
sound_FastDown = 11
sound_Information = 12
sound_Notify = 13
sound_PhoneRing = 14
sound_RingOut = 15
sound_Stop = 16
sound_Tada = 17
sound_Tone = 18
End Enum
' --------------------------------------------------
' --------------------------------------------------
' PUBLIC METHODS
' --------------------------------------------------
'
Public Sub PlaySound(ByVal sound As SoundType)
' Plays a sound from a list (see the 'SoundType' Enum). Code execution continues
' while sound is playing.
Dim soundFileName As String
soundFileName = GetSoundFileName(sound)
If Not soundFileName = vbNullString Then
sndPlaySound32bit SOUND_FILES_PATH & soundFileName, SOUND_DO_NOT_WAIT
End If
End Sub
' --------------------------------------------------
' --------------------------------------------------
' PRIVATE DEPENDENCIES
' --------------------------------------------------
'
Private Function GetSoundFileName(ByVal soundToGet As SoundType) As String
' Returns a windows sound file name (not path) from a member of the custom
' 'SoundType' enumeration.
Dim fName As String
Select Case soundToGet
Case sound_Up: fName = "Speech On.wav"
Case sound_Down: fName = "Speech Off.wav"
Case sound_Attention: fName = "Windows Battery Low.wav"
Case sound_Blocked: fName = "Windows Pop-up Blocked.wav"
Case sound_Boop: fName = "Speech Misrecognition.wav"
Case sound_Complete: fName = "Windows Print complete.wav"
Case sound_Critical: fName = "Windows Critical Stop.wav"
Case sound_Ding: fName = "Windows Ding.wav"
Case sound_Error: fName = "Windows Error.wav"
Case sound_Exclamation: fName = "Windows Exclamation.wav"
Case sound_FastDown: fName = "Speech Sleep.wav"
Case sound_Information: fName = "Windows Information Bar.wav"
Case sound_Notify: fName = "notify.wav"
Case sound_PhoneRing: fName = "Windows Ringin.wav"
Case sound_RingOut: fName = "Windows Ringout.wav"
Case sound_Stop: fName = "chord.wav"
Case sound_Tada: fName = "tada.wav"
Case sound_Tone: fName = "Windows Balloon.wav"
Case Else: fName = vbNullString
End Select
GetSoundFileName = fName
End Function