Sound

Die hier gezeigten Funktionen beziehen sich auf Systemklänge. Das Abspielen beliebiger Sounddateien, wie z. B. MP3 oder WAV, ist mit ShellExecute möglich.

Beep

VBA bringt von Haus aus die VBA-Prozedur Beep mit, die, je nach Systemeinstellung des PCs, einen einzelnen Ton abspielt. Wer es individueller und unabhängig von den Soundeinstellungen des PCs benötigt, kann die gleichnamige API-Funktion nutzen. Die folgende Beispielfunktion hat aber auch einen Nachteil: Solange ein Ton abgespielt wird, wartet die Anwendung. Des weiteren überschreibt in diesem Beispiel die API-Funktion Beep die VBA-Funktion Beep. Falls man das nicht wünscht, muss man hier in der Deklaration noch einen Alias einfügen.

#If VBA7 Then
    Public Declare PtrSafe Function Beep  Lib "kernel32" _
        (ByVal dwFreq As Long, ByVal dwDuration As Long) As Boolean
	'dwFreq zwischen 37 und 32767
#Else
    Public Declare Function Beep  Lib "kernel32" _
        (ByVal dwFreq As Long, ByVal dwDuration As Long) As Boolean
#End If

Public Sub
demoGötterfunken() 'Frequenzen: Tonleiter für 2 Oktaven Const c1 = 262, d1 = 294, e1 = 330, f1 = 349, g1 = 392, a1 = 440, h1 = 494 Const c2 = 523, d2 = 587, e2 = 659, f2 = 698, g2 = 784, a2 = 880, h2 = 988 Dim lngViertel As Long lngViertel = 500 'Länge einer Viertelnote in ms Beep e1, lngViertel 'Freu Beep e1, lngViertel 'de Beep f1, lngViertel 'schö Beep g1, lngViertel 'ner Beep g1, lngViertel 'Göt Beep f1, lngViertel 'ter Beep e1, lngViertel 'fun Beep d1, lngViertel 'ken Beep c1, lngViertel 'Freu Beep c1, lngViertel 'de Beep d1, lngViertel 'aus Beep e1, lngViertel 'E Beep e1, lngViertel * 1.5 'ly Beep d1, lngViertel / 2 'si Beep d1, lngViertel * 2 'um End Sub

MessageBeep

Spielt einen Ton ab, in Abhängigkeit vom Soundschema, das der User in den Systemeinstellungen ausgewählt hat. Die Anwendung läuft weiter, ohne das Abspielen des Tons abzuwarten.

#If VBA7 Then
    Public Declare PtrSafe Function MessageBeep Lib "user32" _
        (ByVal uType As eType) As Boolean
#Else
    Public Declare Function MessageBeep Lib "user32" _
        (ByVal uType As eType) As Boolean
#End If

Public Enum eType
    MB_OK = 0                   'Standard Sound
    MB_ICONERROR = &H10         'Kritischer Stop
    MB_ICONQUESTION = &H20      'Frage
    MB_ICONWARNING = &H30       'Warnung
    MB_ICONINFORMATION = &H40   'Information
End Enum