ฉันมีการคำนวณที่ยาวมาก ๆ ใน Excel ฉันต้องการเบี่ยงเบนความสนใจจากหน้าจอและทำบางสิ่งบางอย่างที่โต๊ะทำงานของฉัน แต่จะได้รับการแจ้งเตือนเมื่อการคำนวณเสร็จสิ้น
ความคิดใด ๆ
ฉันมีการคำนวณที่ยาวมาก ๆ ใน Excel ฉันต้องการเบี่ยงเบนความสนใจจากหน้าจอและทำบางสิ่งบางอย่างที่โต๊ะทำงานของฉัน แต่จะได้รับการแจ้งเตือนเมื่อการคำนวณเสร็จสิ้น
ความคิดใด ๆ
คำตอบ:
ตกลงสิ่งที่ต้องลอง (คำแนะนำถือว่า Excel 2007 หรือใหม่กว่า):
.XLSM
)yourbook.xlsm
) แล้วเลือก Insert → Moduleในโมดูลวางส่วนย่อยนี้:
Sub Auto_Open()
Application.OnKey "{F9}", "F9Handler"
End Sub
นี่จะทำให้คีย์ F9 ถูกกำหนดใหม่ทุกครั้งที่เปิด SS เมื่อคุณกด 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(),"")
อีกวิธีหนึ่งคือการวางโมดูลในเอสเอสคุณสามารถวางไว้ใน Personal.xlsb ของคุณ สิ่งนี้จะช่วยให้คุณสามารถ "บี๊บ" พร้อมใช้งานกับเอสเอสใด ๆ หากต้องการเรียกใช้ให้ปรับเปลี่ยนแถบเครื่องมือด่วนหรือแทรกปุ่ม / รูปร่างเพื่อคลิกใน ss ของคุณและกำหนดแมโครให้กับมัน
คำตอบที่โพสต์โดย @ Ƭᴇcʜιᴇ007เป็นคำตอบที่ยอดเยี่ยมโดยมีข้อยกเว้นประการเดียวที่คนอื่น ๆ แสดงความคิดเห็น: Beep
วิธีนี้ใช้ลำโพงในตัว (และปิดการใช้งาน) ในคอมพิวเตอร์ของคุณและไม่ใช้ลำโพงของคุณดังนั้นคุณอาจไม่ได้ยินอะไรเลย
ฉันกำลังโพสต์วิธีแก้ปัญหาตามคำตอบนั้น หากมีเนื้อหาที่เกี่ยวข้องน้อยฉันจะโพสต์ความคิดเห็นแทน
นี่คือสิ่งที่ฉันใช้ในการเล่นเสียงด้วย VBA บน Windows มันใช้ลำโพงคอมพิวเตอร์ปกติของคุณแทนออนบอร์ดและมักจะปิดใช้งานลำโพงที่เข้าถึงด้วย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