Eu tenho esses cálculos muito longos no Excel. Gostaria de desviar minha atenção da tela e fazer algo na minha mesa, mas ser avisado quando o cálculo for concluído.
Alguma ideia?
Eu tenho esses cálculos muito longos no Excel. Gostaria de desviar minha atenção da tela e fazer algo na minha mesa, mas ser avisado quando o cálculo for concluído.
Alguma ideia?
Respostas:
OK, algo para tentar (as instruções assumem o Excel 2007 ou mais recente):
.XLSM
).yourbook.xlsm
) e escolha Inserir → Módulo.No módulo, cole este trecho:
Sub Auto_Open()
Application.OnKey "{F9}", "F9Handler"
End Sub
Isso fará com que a tecla F9 seja reatribuída sempre que o SS for aberto. Quando você pressiona F9, ele será executado em F9Handler
vez do cálculo usual.
No módulo, cole este trecho:
Sub F9Handler()
Application.Calculate
Beep
End Sub
Agora é isso que será executado quando você pressionar F9. A primeira linha executa o Application.Calculate
(que é o que F9 geralmente executa) e, em seguida, o Bip.
Guarde tudo.
Nota: Você provavelmente precisará ativar macros e / ou tornar o documento um documento "confiável" para garantir que as macro sejam executadas conforme o esperado.
Mais informações:
Assim como os outros mencionados, use o beep
comando no Visual Basic (VB):
Function beepNow()
Beep
End Function
Para obter a codificação VB, você precisa Developer tab
disponibilizar (consulte: Visibilidade da guia Desenvolvedor )
Portanto, quando você altera uma célula ou condição, ele emite um sinal sonoro. Macro de exemplo para chamar o código VBS acima:=IF(C2<>C3,beepNow(),"")
Como alternativa, coloque o módulo no ss, você pode colocá-lo no seu Personal.xlsb. Isso permitiria que você tivesse o "bipe" disponível para qualquer ss. Para executá-lo, modifique a Barra de Ferramentas de Acesso Rápido ou insira um botão / forma para clicar no seu ss e atribua a macro a ele.
A resposta postada por @ Ƭᴇcʜιᴇ007 é excelente, com uma exceção sobre a qual outros comentaram: o Beep
método baseia-se no alto-falante interno (e às vezes desativado) do computador e não usa os alto-falantes, para que você não escute nada.
Estou postando uma solução alternativa com base nessa resposta. Se houvesse menos conteúdo envolvido, eu teria postado um comentário.
Aqui está o que eu uso para reproduzir um som com o VBA no Windows. Ele usa os alto-falantes normais do computador em vez do alto-falante interno e muitas vezes desativado acessado com o Beep
método.
Comece com a resposta por @ Ƭᴇcʜιᴇ007. Apenas mude Beep
para isso:
PlaySound sound_Up
Você pode alterar o som alterando sound_Up
para outro item da enumeração SoundType (lista) no código abaixo, como sound_Complete
ou 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