Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
600to604
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
600to604
600to604
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

3x Tonansage wenn Zelle Wert - Zelle Text

3x Tonansage wenn Zelle Wert - Zelle Text
18.04.2005 14:32:13
Norbert
Hallo Forumsmitglieder!
Vor über zwei Jahren zuletzt hier im Forum gewesen, stellen sich mir nun wieder Fragen zur Sprachausgabe die ich nicht lösen kann. Und zwar sollen WAV-Dateien abgespielt werden, wenn sich Werte oder Text in zellen ändern.
Ich habe mir schon die VBA-Makros für WAV-Ausagben hier im Forum angeschaut, aber bei mir tun sie nichts bzw. ich bringe sie nicht zum laufen.
Wahrscheinlich weil nicht erfüllbar:
1.) Gib meine Sprach.wav aus, wenn sich in Zelle AD849 der Text zur vorigen Zelle ändert.
2.) Gib eine andere Sprach.wav aus, wenn sich im zuletzt gefüllten (davor ist der Bereich ein paar Zellen lang leer) Zellbereich Mxx:M849 eine Zahl von blassgrau in rot umwandelt (habe ich mit bedingter Formatierung gemacht)und diese Zahl die höchste im Bereich ist.
3.) Gib eine andere Sprach.wav aus, wenn sich im zuletzt gefüllten (davor ist der Bereich ein paar Zellen lang leer) Zellbereich Pxx:P849 eine Zahl von blassgrau in rot umwandelt (habe ich mit bedingter Formatierung gemacht)und diese "rote" Zahl die tiefste im Bereich ist.
Wenn das mit der "roten Zahl" nicht lösbar ist, dann zumindest der Höchstwert im Bereich sollte gemeldet werden, auserdem muß ja noch ermittelt werden ab wann von der zuletzt leeren Zelle der Bereich mit Werten gefüllt ist.
Na ja, dann wären noch zwei "Töne" schön wenn es sie gäbe und zwar - starte eine "Sirene" wenn die Zahl in der letzten Zelle D849 den letzten "roten" Höchstwert im Bereich Mxx:M849 übersteigt. Starte eine "Sirene" wenn die Zahl in der anderen letzten Zelle E849 den letzten "roten" Tiefstwert im Bereich Pxx:P849 unterschreitet.
Von den Abfragen her, hört sich das relativ simpel an. Eigentlich nur Wenn &gt Dann mache das. Mir bereitet es aber Probleme, erstens überhaupt mal eine Tonausgabe zustande zu bringen und zweitens noch schwieriger ist, wie kann ich Excel veranlassen, immer ab der letzten vorhergehenden leeren Zelle sich automatisch den "roten" Höchstwert bzw. in der naderen Spalte den letzten "roten" Tiefstwert zu merken. Wenn die Zellen wieder leer werden, soll Excel "die gemerkte Zahl" wieder löschen und die Prozedur beim nächsten mal wieder von neuem beginnen. Mit MaxMin ist es ja einfach, aber Excel soll automatisch erkennen, dass da vorher leere Zellen waren und danach wenn wieder leere Zellen kommen beim nächsten mal wieder neu zu rechnen.
Das Sheet besteht aus 849 Zeilen, wobei nach jeder Stunde die erste Zeile gelöscht (die anderen 848 Zeilen rücken ja dann automatisch nach) und danach in der 849.ten Zeile die Werte sich wieder neu berechnen.
Hoffentlich klappt es mein Bild hochzuladen, es sollte hier zu sehen sein:
Userbild

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ein Ansatz...
18.04.2005 16:12:14
UweD
Hallo
das Hauptproblem, das abspielen der Wav klappt so...
in ein Modul kommt Folgendes:


      
Declare Function sndPlaySound32 Lib "winmm.dll" _
    
Alias "sndPlaySoundA" (ByVal lpszSoundName _
    
As StringByVal uFlags As LongAs Long
Sub Wave1()
    
Call sndPlaySound32("c:\windows\media\chord.wav", 1)
End Sub
Sub Wave2()
    
Call sndPlaySound32("c:\windows\media\ringin.wav", 1)
End Sub
Sub Wave3()
    
Call sndPlaySound32("c:\windows\media\tada.wav", 1)
End Sub 



- - - -
Zum Aufruf wird das Change-Ereignis verwendet:
also in den Codebereich von Tabelle1 kommt das hier:


      
Private Sub Worksheet_Change(ByVal Target As Range)
    
If Range("AD849").Value <> Range("AD848").Value Then
        
Call Wave1
    
End If
'    if Range...usw 'deine weiteren Prüfungen
'        Call Wave2
'    End If
End Sub 



Die einzelnen Wenn... dann kannst du ähnlich aufbauen..
Gruß Uwe
Anzeige
AW: ein Ansatz...
18.04.2005 18:25:38
Norbert
Danke Uwe!
~f~
Ich hatte gerade eine Function probiert (hier im Forum gefunden von Andreas aus 22.03.04) und sie funktioniert sogar, bis auf den Aufruf der wav-Datei. Es wurde immer nur der Gong gespielt. Aufgrund Deiner Aufstellung sehe ich, dass bei + "\Test.wav", 1) der Fehler lag, das gehört in Klammern gesetzt und jetzt kommt "tada". Nun probiere ich Dein Makro aus, welches Du mir sehr sauber aufstellen konntest.
Kannst Du mir eventuell noch sagen, was weniger störungsanfällig abläuft: Dein komplettes VBA-Makro oder der "Zwitter" Formelabfrage in Zelle mit Makro unten:
Declare

Function sndPlaySound32 Lib "winmm.dll" _
Alias "sndPlaySoundA" (ByVal lpszSoundName _
As String, ByVal uFlags As Long) As Long
Public 

Function MakroSound() As String
Call sndPlaySound32(ThisWorkbook.Path + "\Test.wav", 1)
MakroSound = ""
End Function

In Zelle "B1" dann diese Formel: =WENN(A1 ~f~
Anzeige
AW: ein Ansatz...
18.04.2005 22:31:41
Norbert
Hallo Uwe, meine Frage, was weniger störungsanfällig abläuft, dein komplettes VBA-Makro oder der "Zwitter" von Formelabfrage in Zelle und Makro kann ich mir bereits selbst beantworten. Der Aufruf des Makros (Wave-Dateien abspielen) mittels Abfrageformel aus der Zelle heraus ist nicht optimal. Schwankt der Wert ruft die Formel (Anweisung) in der Abfragezelle zu schnell das Makro hintereinander auf und ich komme währenddessen in das Sheet nicht hinein und muß warten "bis es sich beruhigt" (bis die 5 Sekunden lange wave-Datei abgespielt ist).
Morgen versuche ich es mit Deinem Ansatz, der sich mir ohnehin plausibler darstellt. Super ist darin, dass man gleich aus einem Makro heraus alle Wav-Dateien steuern kann.
Ich melde mich wieder wenn's klappt.
Gruß, Norbert
Anzeige
AW: 3x Tonansage wenn Zelle Wert - Zelle Text
21.04.2005 22:41:34
Norbert
Hallo Uwe, Dein Code funktioniert!
Ein Problem hätte ich noch dazu:
Wenn sich in Zelle O849 der Text gegenüber O848 ändert wird wohl die Wav Datei beim ersten mal abgespielt, aber nur einmal. Ändert sich Zelle O849 (oder auch AJ849) auf den gleichen Text wie in O848 (bzw. AJ848) zurück und wird dann der Text neuerlich unterschiedlich zur vorherigen Zelle, dann wird die Wav Datei nicht mehr gespielt. Ich brauche aber das aber jedes mal wenn sich der Text wieder zur vorherigen Zelle O848 ändert.
Gibt es da noch was im Code zu ändern?
Meine Codes sehen jetzt so aus:
Tabelle7(Blatt1):
Declare Function sndPlaySound32 Lib "winmm.dll" _
Alias "sndPlaySoundA" (ByVal lpszSoundName _
As String, ByVal uFlags As Long) As Long
Sub signalwechsel()
Call sndPlaySound32("D:\Eigene Dateien\Daten\Sound\signalwechsel.wav", 1)
End Sub&lt/pre&gt
Sub stopkurs()
Call sndPlaySound32("D:\Eigene Dateien\Daten\Sound\stopkurs.wav", 1)
End Sub&lt/pre&gt
Modul:
&ltpre&gt
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("O849").Value &lt&gt Range("O848").Value Then
Call signalwechsel
End If
If Range("AJ849").Value &lt&gt Range("AJ848").Value Then
Call stopkurs
End If
End Sub&lt/pre&gt
Anzeige
AW: 3x Tonansage wenn Zelle Wert - Zelle Text
22.04.2005 08:15:31
UweD
Hallo
die Codes müssen getauscht werden:
In ein Modul gehört das hier:


      
Declare Function sndPlaySound32 Lib "winmm.dll" _
    
Alias "sndPlaySoundA" (ByVal lpszSoundName _
    
As StringByVal uFlags As LongAs Long
Sub signalwechsel()
    
Call sndPlaySound32("D:\Eigene Dateien\Daten\Sound\signalwechsel.wav", 1)
End Sub
Sub stopkurs()
    
Call sndPlaySound32("D:\Eigene Dateien\Daten\Sound\stopkurs.wav", 1)
End Sub 


In das Tabellenblatt das


      
Private Sub Worksheet_Change(ByVal Target As Range)
    
If Range("O849").Value <> Range("O848").Value Then
        
Call signalwechsel
    
End If
    
If Range("AJ849").Value <> Range("AJ848").Value Then
        
Call stopkurs
    
End If
End Sub 


Dann müsste es klappen
Gruß UweD
Anzeige
AW: 3x Tonansage wenn Zelle Wert - Zelle Text
22.04.2005 14:08:15
Norbert
Danke Uwe - genauso habe ich die Codes ja aufgezeichnet - ich hatte Dir bei meinen Angaben "Tabelle mit Modul" verwechselt.
Zumindest werden die Audio-Meldungen, wenn sich die betreffenden Zellen von selbst automatisch ändern, angesagt.
Ich habe eine "Reglerleiste" mittels der ich per Hand die Werte (Kurse) ändern kann, bis in Zelle AJ849 oder O849 aufgrund anderer Abfragen der Text aufscheint. Fahre ich den Regler zurück dann verschwindet der Text wieder. Erhöhe ich mit dem Regler wieder die Werte wird neuerlich der Text angezeigt, aber dann kommt kein zweites mal ein Ton zustande. Der Text (auf den sich das Ton-Makro bezieht) verschwindet also und wird neu angezeigt u.s.w. Der Ton wird nur dann weiter ausgegeben, wenn ich den Wert mittels Regler zurückfaher und dann noch weiter erhöhe als er vorher bei der ersten Tonansage stand.
Nun ist möglich, dass ohne dem Regler bei Änderung der Zahlenwerte (Kurse werden per DDE aus Teletext eingelesen) und wenn der entsprechende Text angezeigt wird (oder auch wieder verschwindet), die Tonansage sowieso wie gewünscht mehrmals ausgegeben wird und vielleicht nur bei der Handregelung (mit dem Regler, wo ich nur die Cursortasten rauf und runter ziehen brauche um Werte zu ändern) die Tonansage nur einmal aufgerufen wird (bzw. ein zweites mal wenn ich noch höher regle).
Ich lasse das Ganze jetzt mal laufen und warte ab, bis sich der Text in Zelle O849 oder AJ849 automatisch ändert. Vielleicht funktioniert es ohnehin so wie gewünscht.
lg norbert
Anzeige
AW: 3x Tonansage wenn Zelle Wert - Zelle Text
27.04.2005 13:25:55
Norbert
Hallo Uwe, bitte hilf mir wieder ...
Nun habe ich eine extra kleine neue Tabelle (mit Blattname Tonansage) aufgemacht. Das hat lediglich 3 Zeilen, wo ich in der linken Zelle Zeile 2 aus einer anderen Tabelle den Kurs auslesen lasse. In der rechten danebenstehenden Zelle schreibe ich mir per Hand einen Kurs hinein. Dann soll das Makro später einfach die WAV aufrufen, wenn in der linken Zelle der Kurs entweder über bzw. im zweiten Teil in Zeile3 der Wert unter der rechten Zelle liegt und als zweite Vorgabe "AND" jeweils der vorgegebene Text übereinstimmt.
Das Makro arbeitet - aber nur dann(!!!), wenn ich in irgendeiner Zelle der Tabelle Tonansage(Blatt:Audiostopp) was reinschreibe und mit Enter abschließe - von selbst wird kein Ton ausgegeben!?! Ich versteh die Welt nicht ...
So schaut mein Makro aus - was habe ich denn da wieder falsch geschrieben oder ausgelassen?
MODUL
Declare Function sndPlaySound32 Lib "winmm.dll" _
Alias "sndPlaySoundA" (ByVal lpszSoundName _
As String, ByVal uFlags As Long) As Long
Sub stopkurs()
Call sndPlaySound32("D:\Eigene Dateien\Sound\stopkurs.wav", 1)
End Sub
TABELLE1(Stopansage)

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D2").Value > Range("E2").Value And Range("C2").Value = "Sell" Then
Call stopkurs
End If
If Range("D3").Value < Range("E3").Value And Range("C3").Value = "Buy" Then
Call stopkurs
End If
End Sub

Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige