Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<

Microsoft Office 2003-2019 => Excel => Thema gestartet von: Flipchart am März 01, 2019, 19:12:41 Nachmittag

Titel: Office 2016 Wenn Ereignis eintritt, Zelle verändern und Ton abspielen
Beitrag von: Flipchart am März 01, 2019, 19:12:41 Nachmittag
Hello an die Community,

ich habe eine sehr komplexe Excel Tabelle die Daten aus einer externen Datenquelle zieht und diese Daten durch bestimmte Formeln jagt.

Da sich die Daten stetig ändern, ändern sich auch die Ergebnisse, welche die Formeln berechnen.

Die Ergebnisse werden in verschiedenen Zellen ausgegeben und ändern sich stetig, sobald sich die "Rohdaten" verändern.

(für meine Frage ist die Art der Datenquelle sowie die Beschaffenheit der Formeln unerheblich).

Meine Frage: Wenn das Ergebnis einen bestimmten Wert übersteigt, sagen wir ">=1", soll diese Zelle "drei mal aufleuchten" oder "10 Sekunden eine bestimmte Farbe annehmen" sowie "ein Ton abgespielt werden".

Beispiel: Aufgrund der sich verändernden Daten wird das Ergebnis der Zelle "A1" 2,35, sprich ">=1" da 2,35 nun mal größer ist als 1.

Nun möchte ich, dass die Zelle A1, sprich die Zelle mit der "2,35" drei mal aufleuchtet bzw. für eine kurze Zeit eine andere Farbe annimmt (bedingte Formatierung bringt mir daher weniger) sowie ein Ton abgespielt wird, die Art des Tons ist mir egal, Hauptsache ich erhalte ein akustisches Signal.

Ist dies mit "normalen" Funktionen/Formeln realisierbar (wenn ja welche) oder benötige ich dazu einen VBA Code bzw. ein Makro (wenn ja, wie müsste es lauten?)

Vielen Dank für eure Hilfe  :)

Grüße
Titel: Antw:Office 2016 Wenn Ereignis eintritt, Zelle verändern und Ton abspielen
Beitrag von: Ergil am März 07, 2019, 11:59:00 Vormittag
Hallo Flipchart,

ich fürchte mit "normalen" Formeln kommst du hier nicht weiter.

Ich kann mich nicht vorstellen, wie jemand ein Makro für das Problem programmieren will, wenn er nicht genau weiß, wie die Tabelle aussieht. Aber ich weiß auch nicht genug über Makros um das wirklich einschätzen zu können.
Ich kann mir vorstellen, dass das geht, wenn auch nur seeeehr komplex, klingt eher, als wäre Excel nicht ganz das richtige Tool....

Um dich nicht komplett im Regen stehen zu lassen hätte ich aber einen Lösungsansatz, falls dich Hilfszellen nicht stören:
Schreib neben die Ergebniszelle eine Hilfszelle. Erstell über Makro aufzeichnen ein Makro, dass die die Daten kopiert und als "Werte" wieder in die Hilfszellen einfügt. Dann hast du einen festen Wert in der Hilfszelle und einen variablen Wert aus deiner Formel. Änderst du jetzt die Datenquelle, errechnen deine Formeln alles neu. Kommt es zu Abweichungen, können diese mittels bedingter Formatierung zumindest optisch hervorgehoben werden.

Wenn du nun das Makro erneut ausführst, sollten die Hilfszellen mit den aktuellen Ergebnissen überschrieben werden. Sodass du beim nächsten Quellwechsel die alten Werte für den Abgleich noch zur Verfügung stehen.

Ein entsprechendes akustisches Signal ist formelgesteuert soweit ich weiß nicht möglich. Vielleicht über Makro, weiß aber nicht wie das aussehen müsste.

Hoffe damit konnte ich helfen.
Titel: Antw:Office 2016 Wenn Ereignis eintritt, Zelle verändern und Ton abspielen
Beitrag von: MasterOfHardness am März 07, 2019, 13:32:51 Nachmittag
Sehe ich auch so, mit Formeln und bedingter Formatierung ist da nix zu machen.

Hab aber ein wenig VBA-Code zusammengebastelt, schau in den Anhang.

in ein Modul:
Option Explicit

Declare Function Beep Lib "kernel32.dll" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long


ins Tabellenblatt:
Option Explicit

Private Sub Worksheet_Calculate()
On Error GoTo Fehler

Dim Freq As Integer, Dauer As Integer, Anz As Byte, i As Byte

With Tabelle1
  'Ton konfigurieren
  Freq = .Cells(1, 6).Value
  Dauer = .Cells(2, 6).Value * 1000 'Umrechnung in Milisekunden
  Anz = 3
 
  If .Cells(1, 1).Value >= 1 Then
    For i = 1 To Anz
      Beep Freq, Dauer
      With .Cells(1, 1).Interior
        .ThemeColor = xlThemeColorAccent2
        .Pattern = xlSolid
        Application.Wait Now + TimeValue("00:00:01")
        .Pattern = xlNone
      End With
    Next i
  End If
 
End With

weiter:
Exit Sub

Fehler:
With Err
  MsgBox .Description, vbCritical, .Number
  Resume weiter
End With
End Sub