Bisakah saya membuat beep Excel saat perhitungan selesai?


13

Saya memiliki perhitungan yang sangat panjang ini di Excel. Saya ingin mengalihkan perhatian saya dari layar dan menyelesaikan sesuatu di meja saya, tetapi waspada ketika perhitungan selesai.

Ada ide?


1
Bagaimana tepatnya Anda melakukan perhitungan? Jika menggunakan VBA, mengapa tidak menggunakan metode "Beep" VBA ? Apa yang sudah Anda coba?
Ƭᴇcʜιᴇ007

2
@ techie007 bukan VBA. Hanya berfungsi di spreadsheet Excel besar.
Eliyahu

1
Tetap saja Anda mungkin dapat menggunakan fungsi Bip, terutama jika SS Anda sebenarnya menggunakan "fungsi" untuk menghitung alih-alih "rumus". Tetapi "bagaimana" Anda dapat menggunakannya sangat bergantung pada cara kerja spreadsheet Anda, yang kami tidak tahu. Seperti apakah Anda hanya mengetikkan nilai ke dalam sel dan kemudian harus menunggu waktu yang sangat lama untuk menyelesaikannya, atau apakah Anda menekan tombol untuk memulai perhitungan setelah mengisi sel? JIKA Anda menekan F11 untuk membuka editor VBA, apakah ada banyak kode di sana?
Ƭᴇcʜιᴇ007

@ techie007 Saya menggunakan formula. Saya akan menekan F9 setelah banyak pekerjaan dan harus menunggu.
Eliyahu

Anda harus melakukan perhitungan Anda dengan cara lain. Apa yang Anda inginkan tidak mungkin jika semua yang Anda lakukan adalah memberi tahu Excel untuk melakukan perhitungan pada buku kerja terbuka
Ramhound

Jawaban:


21

OK, sesuatu untuk dicoba (instruksi menganggap Excel 2007 atau yang lebih baru):

  • Buka buku kerja Anda.
  • Simpan sebagai SS ( .XLSM) yang diaktifkan makro .
  • Tekan Alt-F11 untuk membuka jendela kode VBA.
  • Klik kanan VBAProject ( yourbook.xlsm), dan pilih Sisipkan → Modul.
  • Buka "Module1" yang baru dibuat.
  • Dalam modul tempel cuplikan ini:

    Sub Auto_Open()
        Application.OnKey "{F9}", "F9Handler"
    End Sub
    

    Ini akan menyebabkan kunci F9 ditugaskan kembali setiap kali SS dibuka. Ketika Anda menekan F9 itu akan berjalan, F9Handlerbukan perhitungan yang biasa.

  • Di modul, rekatkan cuplikan ini:

    Sub F9Handler()
        Application.Calculate
        Beep
    End Sub
    

    Inilah yang sekarang akan dijalankan ketika Anda menekan F9. Baris pertama menjalankan Application.Calculate(yang biasanya dilakukan F9), lalu Beep.

  • Simpan semuanya.

  • Tutup Excel.
  • (Re) Buka XLSM yang Anda buat.
  • Keuntungan. :)

Catatan: Anda mungkin harus mengaktifkan makro dan / atau menjadikan dokumen itu dokumen "tepercaya" untuk memastikan makro berjalan seperti yang diharapkan.

Info lebih lanjut:


5

Sama seperti yang lain, gunakan beepperintah dalam Visual Basic (VB):

Function beepNow()
Beep 
End Function

Untuk mendapatkan kode VB, Anda perlu membuatnya Developer tabtersedia (lihat: Membuat tab Pengembang terlihat )

Jadi, ketika Anda memiliki perubahan dalam sel atau kondisi, itu akan berbunyi bip. Contoh makro untuk memanggil kode VBS di atas:=IF(C2<>C3,beepNow(),"")


2
Perlu diketahui bahwa jika saat ini Anda tidak menggunakan VBA UDF, memperkenalkannya dapat menyebabkan penurunan kinerja yang sangat besar (karena, tidak seperti fungsi normal, mereka hanya berjalan di utas utama). Seharusnya tidak menjadi masalah dengan satu bip, tetapi jika Anda mulai menaburkannya di mana-mana, Anda akan memiliki masalah.
sapi

1
Sayangnya fungsi ini menggunakan speaker PC Anda - bukan kartu suara dan speaker Anda, tetapi speaker internal. FYI - Di banyak perusahaan speaker PC telah dihapus atau dinonaktifkan sehingga Anda tidak akan mendengar apa pun.
raddevus

1

Atau dengan menempatkan modul di ss, Anda bisa memasukkannya ke Personal.xlsb Anda. Ini akan memungkinkan Anda untuk memiliki "bip" yang tersedia untuk ss. Untuk menjalankannya, modifikasi Bilah Alat Akses Cepat atau masukkan tombol / bentuk untuk mengklik ss Anda dan menetapkan makro untuknya.


Selamat datang di Pengguna Super. Ini tampaknya merupakan komentar pada jawaban lain daripada solusi yang jauh berbeda, yang dimaksudkan untuk posting jawaban. Dengan sedikit rep lagi, Anda akan dapat memposting komentar.
fixer1234

0

Jawaban yang diposting oleh @ Ƭᴇcʜιᴇ007 adalah jawaban yang sangat bagus dengan satu pengecualian yang dikomentari oleh orang lain: Beepmetode ini bergantung pada speaker onboard Anda (dan terkadang dinonaktifkan) di dalam komputer dan tidak menggunakan speaker Anda, sehingga Anda mungkin tidak mendengar apa pun.

Saya memposting solusi berdasarkan jawaban itu. Jika ada lebih sedikit konten yang terlibat saya akan memposting komentar.

Inilah yang saya gunakan untuk memutar suara dengan VBA di Windows. Ia menggunakan pengeras suara komputer biasa Anda, bukan onboard, dan pengeras suara yang sering dinonaktifkan diakses dengan Beepmetode ini.

Mulailah dengan jawaban oleh @ Ƭᴇcʜιᴇ007. Ubah saja Beepini:

PlaySound sound_Up

Anda dapat mengubah suara dengan mengubah sound_Upke item lain dari enumerasi SoundType (daftar) dalam kode di bawah ini seperti sound_Completeatau 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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.