• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Tekrarlayan sesli uyarı

Katılım
8 Haziran 2012
Mesajlar
2
Excel Vers. ve Dili
2007
İyi günler, sitenizde sorunumla ilgili benzer başlıklar gördüm ancak 1 tanesinde örnek.rar dosyası silinmiş galiba, o yüzden tekrar sormak durumundayım,

Benim sorunum basit aslında, belli bir hücrenin değeri sıfır veya sıfırdan düşük olduğu zaman windows un mesela "chime.wav" adlı ses dosyasını 0,5 saniye aralıklarla çalsın istiyorum mesela 30 40 kere. Ama loop yapmaya çalıştığımda (diyelim bir i = 1 ile 100 arasında ikenher ses çaldığında i +1 oluyor diyelim, bu komut exceli kilitliyor)

yardım lütfen :)

Bulduğum ve kendime uyarladığım kod şu şekilde;

Kod:
Option Explicit
 
Private Declare Function sndPlaySound32 Lib "winmm.dll" _
Alias "sndPlaySoundA" (ByVal lpszSoundName _
As String, ByVal uFlags As Long) As Long
 
Private Sub Worksheet_Change(ByVal Target As Range)
     
    Dim Cell            As Range
    Dim CheckRange      As Range
    Dim PlaySound       As Boolean
     
    Set CheckRange = Range("E3")
    For Each Cell In CheckRange
        If Cell.Value <= 0 Then
            PlaySound = True
            End If
            
    Next
    If PlaySound Then
        Call sndPlaySound32("C:\Windows\Media\chimes.wav", 1)

    End If
     
End Sub


Edit: bu haliyle sadece 1 kere çalıyor ve benim anlık veri aldığım bir tabloda değişimi farketmem açısından, değer belli aralığa geldiğinde ses çıkartıp durmalı ki benim dikkatimi çeksin :)
 
Son düzenleme:
Sn. Erman SEKİTMEZ'in sndPlaySound api'si ile ilgili bir makalesi var.



sndPlaySound api'si ile sadece wav formatındaki ses dosyalarını çalabiliriz. Aşağıdaki şekilde modulün başında tanımlanır.
Kod:
Private Declare Function sndPlaysound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

lpszSoundName parametresi çalınacak ses dosyanın yolunu yada bir sistem sesi ise registry'deki ismini gösterir. Eğer belirtilen dosya bulunamazsa sistemde tanımlı uyarı sesini verir.

uFlag değeri ise dosyanın nasıl çalınacağını belirler. Aşağıdaki önemli olan bir kaç tanesini açıklamaya çalıştım.

SND_SYNC = 0 ' Programın devam etmesi için ses dosyasının çalınıp bitmesi beklenir
SND_ASYNC = 1 ' Ses dosyası çalınırken program kendi akışına devam eder.
SND_NODEFAULT = 2 ' Eğer verilen dosya bulunamazsa sistemdeki varsayılan sesin çalınmamasını sağlar.
SND_LOOP = 8 'Dosyanın sürekli çalınması sağlanır. SND_ASYNC ile birlikte kullanılmalıdır. Durdurmak için sndPlaysound ile farklı bir dosya çalınmalı yada dosya adı boş bırakılmalıdır.
SND_ALIAS = 65536 'Registry'de kayıtlı bir sistem dosyası çalınır

Aşağıda bu api'nin kullanımı ile ilgili bir kaç örnek var, Module yazıp test ediniz.
Kod:
Private Declare Function sndPlaysound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

Sub Test()
SND_SYNC = 0 ' programın devam etmesi için ses dosyasının çalınıp bitmesi beklenir
SND_ASYNC = 1 ' ses dosyası çalınırken program akışına devam eder.
SND_NODEFAULT = 2 ' eğer verilen dosya bulunamazsa sistemdeki varsayılan sesin çalmamasını sağlar
SND_LOOP = 8 'dosyanın sürekli çalınması sağlanır. SND_ASYNC ile birlikte kullanılmalıdır. Durdurmak için sndPlaysound ile farklı bir dosya çalınmalı yada dosya adı boş bırakılmalıdır.
SND_ALIAS = 65536 'registry'de kayıtlı bir sistem dosyası çalınır

'örnek 1
'snd_alias ile registry'de tanımlı olan bir sistem sesini çalabilirsiniz.
sndPlaysound "SystemStart", SND_ALIAS Or SND_SYNC

'örnek 2
'snd_loop ile aynı ses dosyasının sürekli çalmasını sağlayabilirsiniz. SND_ASYNC ile birlikte kullanılmalıdır.
sndPlaysound "DeviceFail", SND_LOOP Or SND_ASYNC Or SND_ALIAS

MsgBox "Şu anda aynı ses dosyası sürekli çalıyor olmalı. Durdurmak için bu mesaj kutusunu kapatın"
sndPlaysound vbNullString, 0

'bu mesaj kutusuda Erhan bey' in kullandığı 3 parametresinin nereden geldiğini gösteriyor:
MsgBox SND_ASYNC Or SND_NODEFAULT

End Sub
 
Geri
Üst