Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Töne mit VBA?

Forumthread: Töne mit VBA?

Töne mit VBA?
02.05.2008 23:36:00
Guido
Guten Abend,
ich möchte in bestimmten Situationen einen Warnton ausgeben.
Windows 98 erlaubt leider nicht Beep mit Parametern und das Ganze muss ohne externe
Sound-Datei funktionieren.
Nun meine Frage: Ist es möglich mit VBA Töne zu erzeugen und wenn ja, wie macht man das?
(Ich meine nicht Beep).
Grüße Guido

Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Töne mit VBA?
03.05.2008 02:21:11
fcs
Hallo Guido,
du kannst eine Message-Box erzeugen, die sich sofort wieder schließt. Ob ein Ton und welcher Ton erzeugt wird hängt dann von den Windows-Systemeinstellungen für Akustische Signale des Anwenders ab.
Gruß
Franz
Sub Laerm1() Application.SendKeys "{ENTER}" MsgBox "Sound Frage", vbQuestion End Sub Sub Laerm2() Application.SendKeys "{ENTER}" MsgBox "Test Kritisch", vbCritical End Sub Sub Laerm3() Application.SendKeys "{ENTER}" MsgBox "Test Ausrufezeichen", vbExclamation End Sub Sub Laerm4() Application.SendKeys "{ENTER}" MsgBox "Test Information", vbInformation End Sub


Anzeige
AW: Töne mit VBA?
03.05.2008 10:21:00
Guido
Hi,
danke, aber da passiert schlicht gar nichts, kurzes Zucken und das wars.
Bei uns in der Firma sind die Sounds in Windows vom Admin sowieso
ausgeschaltet, daher suche ich eine "Insellösung".
Grüße Guido

AW: Töne mit VBA?
03.05.2008 10:36:00
Hajo_Zi
Hallo Guido,
ich habe mal in mein Archiv geschaut. Vielleicht ist das ein Ansatz.


' ************************************************************* _
'  Modul:  Modul1  Typ = Allgemeines Modul
' **************************************************************
Option Explicit
' weitere API Funktionen
' http://www.herber.de/mailing/api.htm
Declare Function  _
Ton& Lib "Kernel32" Alias "Beep" (ByVal dwFrequenz As Long, ByVal dwDauer As Long)
Sub Signal()
'   ton, länge
Ton 100, 1000
End Sub
Sub Komposition()
'   von Golem Herber.de
Dim b As Integer, j As Integer, i As Integer
b = 0
For j = 0 To 3
b = 0
For i = 0 To  _
50
b = b + 10
Ton 100 + b, 100
Next
b = 0
For i = 0 To  _
50
b = b + 10
Ton 600 - b, 100
Next
Next j
End Sub



' **************************************************************
' Modul: Modul2 Typ = Allgemeines Modul
' **************************************************************

Option Explicit
' von Klaus-Martin http://clever-forum.de/read.php?11,150593,150593#msg-150593
Declare Function Beep Lib "Kernel32" (ByVal Fq As Long, ByVal Tm As Long) As Long
Sub Warnung()
Beep 392, 200
Beep 494, 100
Beep 588, 200
Beep 740, 100
Beep 880, 400
Beep 740, 100
Beep 880, 900
End Sub



Anzeige
AW: Töne mit VBA?
03.05.2008 10:47:54
Guido
Hi,
"...Windows 98 erlaubt leider nicht Beep mit Parametern..."
Bringt es also nicht.
mfg Guido

AW: Töne mit VBA?
03.05.2008 19:46:00
Antje
Hallo alle zusammen,
ich habe folgendes probiert:

Sub Laerm4()
Application.SendKeys "{ENTER}"
MsgBox "Test Information", vbInformation
End Sub


Dies funktioniert bei mir aber das nachfolgende Makro gibt keinen Ton zurück die Sanduhr läuft zwar einen Augenblick aber sonst passiert nichts.
Option Explicit
' weitere API Funktionen
' https://www.herber.de/mailing/api.htm
Declare


Function _
Ton& Lib "Kernel32" Alias "Beep" (ByVal dwFrequenz As Long, ByVal dwDauer As Long)


Sub Signal()
'   ton, länge
Ton 100, 1000
End Sub


Weiß jemand woran das liegen kann.
MFG Antje

Anzeige
Ich habe Excel 2003!
03.05.2008 19:49:33
Antje

AW: Ich habe Excel 2003!
04.05.2008 00:08:36
Nepumuk
Hallo Antje,
schau mal in der Systemsteuerung - System - Gerätemanager - Systemgeräte - Systemlautsprecher, ob das Gerät aktiviert ist.
Gruß
Nepumuk

AW: Ich habe Excel 2003!
04.05.2008 20:13:00
Antje
Hallo Nepumuk,
Systemlautsprecher sind aktiviert. Vor ca.3 Monaten hatte ich auch ein Makro mit Beep das auch funktioniert hatte. Nur jetzt geht es nicht mehr.
MFG Antje

Anzeige
AW: Ich habe Excel 2003!
04.05.2008 21:09:04
Nepumuk
Hallo Antje,
der Lautsprecher lässt sich auch in BIOS deaktivieren. Ich weiß aber nicht, welches BIOS du hast, einfach mal suchen.
Gruß
Nepumuk

AW: Ich habe Excel 2003!
05.05.2008 21:37:20
Antje
Hallo Nepumuk,
Entschuldigung, dass ich erst jetzt schreibe, ging nicht eher!
habe in der Registry den Schlüssel HKEY_CURRENT_USER\Control Panel\ Sound. Dort sollte der Eintrag Beep auf den Wert no gesetzt sein war aber auf yes, also sollte eigentlich ein Beep ertönen.
Ich habe BIOS:
Nvidia - 42302e31
)Phoenix - Award WorkstationBIOS v6.00PG
oC(Phoenix - Award WorkstationBIOS v6.00PG
MFG Antje

Anzeige
AW: Ich habe Excel 2003!
07.05.2008 00:46:00
Reinhard
Hi Antje,
ich habe Nepumuk so verstanden, du solltest mal in das Bios gehen und dort alle Einstellmöglichkeiten abklappern ob da irgednwo ein falsche Häkchen sitzt.
So wie ich es bisher kennengelernt habe mit meinen PCs kommt man in das BIOS wenn man während der Startphase des PCs eine bestimmte taste, Tastenkombination drückt.
Meist wird diese zu drückende Tste auch sehr kurz im Dos-Modus des Bildschirms angezeigt.
Ich kenne "Entf", F2, F8 als die Tasten die man drücken muss.
Mit meiner spärlichen Hardwareahnung deute ich Nvidia als Grafikkarte und du hast ein Phönix BIOS.
Dummerweise hört da schon meine Ahnung auf, also keine Ahnung was du beim Starten deines PCs drücken mußt um ins BIOS zu gelangen. Probiere mal meine drei Tasten aus...
Wenn du es nicht hinkriegst kann ich in einem Hardwareforum nachfragen, welche Tasten denn bei einem PhönixBIOS zu drücken sind um dahin zu gelangen.
Wobei mir mein intuitiver Bauch sagt, dadran liegt es nicht.
Du sagst vor 3 Monaten "beepte" ein Makro, hast du den Code noch, zeige mal her.
Und die übliche Frage, was hast du innerhalb der 3 Monate am PC an Hard- und Software verändert?
Wurde der PC bewegt? (bewegen kann auch ein diccker Anknaller vom Staubsauger sein, alles schon erlebt), alle kabelverbindungen innerhalb und außerhalb des PCs auf korrekten Sitz überprüft?
Grundsätzlich gefragt, mittels Winamp, mediaplayer, sonstwas , kannst du Musik hören?
Naja, mehr brainstorming als direkte Hilfe, ich lasse die Frage auf noch offen...
Gruß
Reinhard

Anzeige
AW: Ich habe Excel 2003!
08.05.2008 08:00:24
Antje
Hallo alle zusammen,

Wurde der PC bewegt? (bewegen kann auch ein diccker Anknaller vom Staubsauger sein, alles schon erlebt), alle kabelverbindungen innerhalb und außerhalb des PCs auf korrekten Sitz überprüft?


OK, das könnte es sein ich werde mal nachsehen ebenfalls im BIOS bei meiner Version Entf Taste
Danke für die Hinweise!
Antje

Anzeige
Gefunden, erledigt! oT
05.05.2008 20:02:44
Guido
oT
;
Anzeige

Infobox / Tutorial

Töne mit VBA erzeugen


Schritt-für-Schritt-Anleitung

Um Töne mit VBA in Excel zu erzeugen, kannst du die Beep-Funktion oder API-Deklarationen nutzen. Hier sind die Schritte:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.
  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle "Einfügen" > "Modul".
  3. Füge den Code ein:

    Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
    
    Sub ErzeugeTon()
       Beep 500, 1000 ' Frequenz 500 Hz, Dauer 1000 ms
    End Sub
  4. Führe das Makro aus: Drücke F5, um den Ton zu hören.

Häufige Fehler und Lösungen

  • Kein Ton hörbar: Überprüfe, ob deine Lautsprecher aktiviert sind. Manchmal sind diese im BIOS deaktiviert oder die Einstellungen in der Systemsteuerung sind falsch konfiguriert.

  • VBA funktioniert nicht in Windows 98: Beachte, dass Beep in Windows 98 ohne Parameter arbeitet. In diesem Fall kannst du auf alternative Methoden zurückgreifen.


Alternative Methoden

Wenn die Beep-Funktion nicht funktioniert, kannst du andere Ansätze verwenden:

  1. Message Box Methode: Diese Methode gibt einen Ton aus, der von den Windows-Systemeinstellungen abhängt:

    Sub Warnton()
       MsgBox "Achtung!", vbCritical
    End Sub
  2. API-Deklaration: Wie bereits erwähnt, kannst du die Beep API verwenden, um spezifische Frequenzen und Dauer zu steuern.


Praktische Beispiele

Hier sind einige praktische Beispiele, um verschiedene Töne mit VBA zu erzeugen:

Sub MehrereToene()
   Beep 392, 200 ' F#
   Beep 494, 100 ' B
   Beep 588, 200 ' D#
   Beep 740, 100 ' F#
   Beep 880, 400 ' A
End Sub

Mit diesem Code kannst du eine kleine Melodie erzeugen, die Töne in unterschiedlicher Frequenz und Dauer abspielt.


Tipps für Profis

  • Experimentiere mit Frequenzen: Du kannst verschiedene Frequenzen ausprobieren, um unterschiedliche Töne zu erzeugen. Häufige Frequenzen sind 440 Hz (A) oder 523 Hz (C).

  • Nutze Variablen: Verwende Variablen für Frequenzen und Dauer, um deinen Code flexibler zu gestalten:

    Sub FlexibleToene()
       Dim freq As Long
       Dim dauer As Long
       freq = 600
       dauer = 500
       Beep freq, dauer
    End Sub
  • Debugging: Verwende Debug.Print in deinem Code, um während der Ausführung Informationen zu erhalten, falls Töne nicht wie erwartet ausgegeben werden.


FAQ: Häufige Fragen

1. Warum höre ich keinen Ton? Überprüfe die Lautstärkeeinstellungen deines Systems und stelle sicher, dass die Lautsprecher aktiviert sind. Manchmal kann auch ein BIOS-Problem vorliegen.

2. Funktioniert dieser Code in allen Excel-Versionen? Der Code sollte in den meisten Versionen von Excel funktionieren, jedoch können spezifische Funktionen wie SendKeys in älteren Versionen möglicherweise nicht zuverlässig sein.

3. Gibt es eine Möglichkeit, benutzerdefinierte Töne abzuspielen? Ja, für benutzerdefinierte Töne kannst du die PlaySound-API verwenden, die dir erlaubt, .wav-Dateien abzuspielen. Dies erfordert jedoch das Hinzufügen zusätzlicher Deklarationen.

4. Was kann ich tun, wenn Beep nicht funktioniert? Falls die Beep-Funktion nicht funktioniert, versuche die Verwendung einer Message Box oder überprüfe, ob der Lautsprecher im BIOS deaktiviert ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige