Hesaplama tamamlandığında Excel'den bip sesi çıkarabilir miyim?


13

Excel'de bu çok uzun hesaplamalar var. Dikkatimi ekrandan yönlendirmek ve masamda bir şeyler yapmak istiyorum, ancak hesaplama bittiğinde uyarılmak istiyorum.

Herhangi bir fikir?


1
Hesaplamayı tam olarak nasıl yapıyorsunuz? VBA içindeyse, neden VBA'nın "Bip" yöntemini kullanmıyorsunuz ? Zaten ne denedin?
Ƭᴇcʜιᴇ007

2
@ techie007 VBA değil. Sadece büyük Excel elektronik tablolarında çalışır.
Eliyahu

1
Yine de muhtemelen Bip işlevini kullanabilirsiniz, özellikle SS aslında "formül" yerine hesaplamak için "işlevler" kullanıyorsa. Ancak "nasıl" kullanabileceğiniz, büyük ölçüde, bilmediğimiz e-tablonuzun nasıl çalıştığına bağlıdır. Bir hücreye sadece bir değer yazıyor ve daha sonra bitmesi için gerçekten uzun bir süre beklemek zorunda mısınız, yoksa hücreleri doldurduktan sonra hesaplamaya başlamak için bir düğmeye mi basıyorsunuz? VBA editörünü açmak için F11 tuşuna basarsanız, içinde bir sürü kod var mı?
Ƭᴇcʜιᴇ007

@ techie007 Formül kullanıyorum. Bir sürü işten sonra F9 tuşuna basıp beklemek zorunda kalacağım.
Eliyahu

Hesaplamalarınızı başka bir şekilde yapardınız. Yaptığınız tek şey Excel'e açık çalışma kitabında hesaplamaları yapmasını söylüyorsa
Ramhound

Yanıtlar:


21

Tamam, denenecek bir şey var (talimatlar Excel 2007 veya daha yenisini varsayar):

  • Çalışma kitabınızı açın.
  • Makro etkin bir SS ( .XLSM) olarak kaydedin .
  • VBA kodlama penceresini açmak için Alt-F11 tuşuna basın.
  • VBAProject ( yourbook.xlsm) öğesine sağ tıklayın ve Ekle → Modül'ü seçin.
  • Yeni oluşturulan "Modül1" i açın.
  • Modülde bu pasajı yapıştırın:

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

    Bu, SS her açıldığında F9 tuşunun yeniden atanmasına neden olur. F9 tuşuna bastığınızda F9Handlernormal hesaplama yerine çalışır .

  • Modülde, bu snippet'i yapıştırın:

    Sub F9Handler()
        Application.Calculate
        Beep
    End Sub
    

    Şimdi F9 tuşuna bastığınızda çalışacak olan budur. İlk satır Application.Calculate(F9'un genellikle yaptığı şey) ve ardından Bip sesi çalıştırır.

  • Her şeyi kaydedin.

  • Excel'i kapatın.
  • (Yeniden) Yaptığınız XLSM'yi açın.
  • Kar. :)

Not: Makroların beklendiği gibi çalışmasını sağlamak için muhtemelen makroları etkinleştirmeniz ve / veya belgeyi "güvenilir" bir belge haline getirmeniz gerekir.

Daha fazla bilgi:


5

Diğerleri de belirtildiği gibi, beepVisual Basic (VB) komutunu kullanın :

Function beepNow()
Beep 
End Function

VB kodlamasını almak için Developer tabkullanılabilir olanı edinmeniz gerekir (bkz: Geliştirici sekmesini görünür hale getirme )

Bir hücrede veya durumda bir değişiklik olduğunda, bip sesi çıkarır. Yukarıdaki VBS kodunu çağırmak için örnek makro:=IF(C2<>C3,beepNow(),"")


2
Şu anda herhangi bir VBA UDF kullanmıyorsanız, onları tanıtmanın büyük bir performans düşüşüne yol açabileceğini unutmayın (normal işlevlerin aksine, yalnızca ana iş parçacığında çalışırlar). Tek bir bip sesi ile ilgili bir sorun olmamalı, ancak bunu her yere serpmeye başlarsanız, sorunlarınız olacaktır.
sapi

1
Ne yazık ki bu işlev PC hoparlörünüzü kullanır - ses kartınızı ve hoparlörlerinizi değil, dahili hoparlörü. FYI - Birçok şirkette PC hoparlörü çıkarılmış veya devre dışı bırakılmıştır, böylece hiçbir şey duymazsınız.
raddevus

1

Alternatif olarak modülü ss'ye yerleştirmek için Personal.xlsb dosyasına yerleştirebilirsiniz. Bu, herhangi bir ss için "bip" sinin kullanılmasını sağlar. Çalıştırmak için Hızlı Erişim Araç Çubuğu'nu değiştirin veya ss'nizi tıklatıp makroyu atayın.


Süper Kullanıcıya Hoşgeldiniz. Bu, büyük ölçüde farklı bir çözümden ziyade diğer cevaplar hakkında bir yorum gibi görünmektedir, cevap mesajlarının amacı budur. Biraz daha temsilci ile yorum gönderebileceksiniz.
fixer1234 9:17

0

@ Ƭᴇcʜιᴇ007 tarafından gönderilen cevap, diğerlerinin yorumladığı istisna dışında mükemmel bir cevaptır: Beepyöntem, bilgisayardaki yerleşik (ve bazen devre dışı) hoparlörünüze dayanır ve hoparlörlerinizi kullanmaz, böylece hiçbir şey duyamazsınız.

Bu cevaba dayalı bir geçici çözüm gönderiyorum. Daha az içerik olsaydı bunun yerine bir yorum gönderirdim.

İşte Windows'ta VBA ile ses çalmak için kullandığım şey. Yerleşik ve genellikle Beepyöntemle erişilen devre dışı bırakılmış hoparlör yerine normal bilgisayar hoparlörlerinizi kullanır .

@ Ƭᴇcʜιᴇ007'nin cevabı ile başlayın. Sadece şunu değiştirin Beep:

PlaySound sound_Up

Sen değiştirerek sesi değiştirebilirsiniz sound_Upgibi aşağıda kodunda SoundType numaralandırma (liste) dan başka bir öğeye sound_Completeveya 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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.