Mam te naprawdę długie obliczenia w Excelu. Chciałbym odwrócić uwagę od ekranu i zrobić coś przy biurku, ale ostrzegam o zakończeniu obliczeń.
Jakieś pomysły?
Mam te naprawdę długie obliczenia w Excelu. Chciałbym odwrócić uwagę od ekranu i zrobić coś przy biurku, ale ostrzegam o zakończeniu obliczeń.
Jakieś pomysły?
Odpowiedzi:
OK, spróbuj czegoś (instrukcje zakładają Excel 2007 lub nowszy):
.XLSM
) z obsługą makr .yourbook.xlsm
) i wybierz Wstaw → Moduł.W module wklej ten fragment:
Sub Auto_Open()
Application.OnKey "{F9}", "F9Handler"
End Sub
Spowoduje to, że klawisz F9 będzie przypisany ponownie przy każdym otwarciu SS. Kiedy naciśniesz F9, uruchomi się F9Handler
zamiast zwykłego obliczenia.
W module wklej ten fragment kodu:
Sub F9Handler()
Application.Calculate
Beep
End Sub
To będzie teraz uruchamiane po naciśnięciu F9. Pierwszy wiersz uruchamia Application.Calculate
(co zwykle wykonuje F9), a następnie Sygnał dźwiękowy.
Zaoszczędź wszystko.
Uwaga: prawdopodobnie będziesz musiał włączyć makra i / lub uczynić dokument „zaufanym” dokumentem, aby upewnić się, że makra działają zgodnie z oczekiwaniami.
Więcej informacji:
Podobnie jak inne wspomniane, użyj beep
polecenia w języku Visual Basic (VB):
Function beepNow()
Beep
End Function
Aby uzyskać kodowanie VB, musisz uzyskać Developer tab
dostępne (patrz: Wyświetlanie karty Deweloper )
Kiedy więc zmienisz komórkę lub stan, usłyszysz sygnał dźwiękowy. Przykładowe makro do wywołania powyższego kodu VBS:=IF(C2<>C3,beepNow(),"")
Alternatywnie do umieszczenia modułu w ss, możesz umieścić go w pliku Personal.xlsb. Umożliwi to dostęp do „beep” dla każdego ss. Aby go uruchomić, zmodyfikuj pasek narzędzi szybkiego dostępu lub wstaw przycisk / kształt, aby kliknąć ss i przypisać mu makro.
Odpowiedź wysłana przez @ Ƭᴇcʜιᴇ007 jest doskonała, z jednym wyjątkiem, że inni skomentowali: Beep
metoda polega na twoim (i czasem wyłączonym) głośniku w komputerze i nie używa głośników, więc możesz nic nie słyszeć.
Publikuję obejście na podstawie tej odpowiedzi. Gdyby było mniej treści, zamieściłbym komentarz.
Oto, czego używam do odtwarzania dźwięku w VBA na Windowsie. Używa zwykłych głośników komputerowych zamiast wbudowanych i często wyłączanych głośników, do których dostęp uzyskuje się za pomocą tej Beep
metody.
Zacznij od odpowiedzi @ Ƭᴇcʜιᴇ007. Po prostu zmień Beep
to:
PlaySound sound_Up
Możesz zmienić dźwięk, zmieniając sound_Up
na inny element z wyliczenia (listy) SoundType w poniższym kodzie, takim jak sound_Complete
lub 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