Bei Wertänderung einer dynamischen Zelle Sound, Farbe und kopieren
Hallo liebe Community,
ich bin neu hier. Habe meine momentane Problematik auch in anderen Foren geposted aber scheinbar ist das für die meisten zu hoch :p
Und zwar habe ich ein Problem mit der Verarbeitung einer dynamischen Zelle. Denn diese Zelle wird mit einem Realtime Börsenkurs via Makro alle fünf Sekunden gespeist.
Sub autoexec()
Calculate
Application.OnTime Now + TimeValue("00:00:05"), "autoexec"
End Sub
Das funktioniert zwar nicht sehr zuverlässig und leider auch mit ordentlichem Delay aber eine bessere Lösung fällt mir hierzu nicht ein.
Nun kann ich mit dieser Zelle leider nicht weiter arbeiten, da ich nicht weiß wie man sich auf vorangegangene Werte der selbigen Zelle bezieht
Die Aufgabe lautet: Die dynamische Zelle ändert ihre Farbe sobald sich ihr Wert zum Vorwert verändert. Die Farbe soll rot werden wenn der neue Wert niedriger als der vorangegangene Wert ist. Steigt der Wert, so soll sich die Zelle grün färben. Zusätzlich soll "Sound1" ertönen wenn sich die Zelle im Wert positiv verändert und "Sound2" sobald er sich verringert.
Ferner soll im Zuge eines neu eingehenden Wertes dieser in ein anderes Arbeitsblatt kopiert und jeder weitere neue Wert darunter gelistet werden, sodass eine Historie entsteht.
Mein bisheriger Ansatz sieht wie folgt aus:
Option Explicit
Private Sub Worksheet_Calculate()
With Range("B15")
If .Value >= 17.57 Then
.Interior.Color = RGB(0, 250, 0)
Else
.Interior.Color = RGB(250, 0, 0)
End If
If Range("B15") > 17 Then
"Sound1"
If Range("B15") < 17 Then
"Sound2"
End If
End With
End Sub
Sub KopierenAlsWert_2()
Sheets("Trade_Ware").Range("B15").Copy
Sheets("Protokoll").Range("A73").PasteSpecial xlPasteValues
End Sub
Das Einzige was bisher ansatzweise funktioniert ist der Farbwechsel, wenn ich einen bestimmten Wert definiere, was aber in diesem Falle einer dynamischen Zelle keinen Sinn macht.
Bin für jeden Denkansatz dankbar!
ich bin neu hier. Habe meine momentane Problematik auch in anderen Foren geposted aber scheinbar ist das für die meisten zu hoch :p
Und zwar habe ich ein Problem mit der Verarbeitung einer dynamischen Zelle. Denn diese Zelle wird mit einem Realtime Börsenkurs via Makro alle fünf Sekunden gespeist.
Sub autoexec()
Calculate
Application.OnTime Now + TimeValue("00:00:05"), "autoexec"
End Sub
Das funktioniert zwar nicht sehr zuverlässig und leider auch mit ordentlichem Delay aber eine bessere Lösung fällt mir hierzu nicht ein.
Nun kann ich mit dieser Zelle leider nicht weiter arbeiten, da ich nicht weiß wie man sich auf vorangegangene Werte der selbigen Zelle bezieht
Die Aufgabe lautet: Die dynamische Zelle ändert ihre Farbe sobald sich ihr Wert zum Vorwert verändert. Die Farbe soll rot werden wenn der neue Wert niedriger als der vorangegangene Wert ist. Steigt der Wert, so soll sich die Zelle grün färben. Zusätzlich soll "Sound1" ertönen wenn sich die Zelle im Wert positiv verändert und "Sound2" sobald er sich verringert.
Ferner soll im Zuge eines neu eingehenden Wertes dieser in ein anderes Arbeitsblatt kopiert und jeder weitere neue Wert darunter gelistet werden, sodass eine Historie entsteht.
Mein bisheriger Ansatz sieht wie folgt aus:
Option Explicit
Private Sub Worksheet_Calculate()
With Range("B15")
If .Value >= 17.57 Then
.Interior.Color = RGB(0, 250, 0)
Else
.Interior.Color = RGB(250, 0, 0)
End If
If Range("B15") > 17 Then
"Sound1"
If Range("B15") < 17 Then
"Sound2"
End If
End With
End Sub
Sub KopierenAlsWert_2()
Sheets("Trade_Ware").Range("B15").Copy
Sheets("Protokoll").Range("A73").PasteSpecial xlPasteValues
End Sub
Das Einzige was bisher ansatzweise funktioniert ist der Farbwechsel, wenn ich einen bestimmten Wert definiere, was aber in diesem Falle einer dynamischen Zelle keinen Sinn macht.
Bin für jeden Denkansatz dankbar!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 303656
Url: https://administrator.de/forum/bei-wertaenderung-einer-dynamischen-zelle-sound-farbe-und-kopieren-303656.html
Ausgedruckt am: 03.05.2025 um 09:05 Uhr
13 Kommentare
Neuester Kommentar

Schreibe alle Werte in ein anderes Sheet und erstelle eine bedingte Formatierung auf Basis einer Formel die sich jeweils auf das andere Sheet bezieht und die Farben je nach Wert automatisch setzt.

Du machst quasi bei jedem Update der Zahlen ein Backup deiner vorherigen Werte (Copy in ein anderes Sheet) in ein anderes Sheet und darauf beziehst du dann deine bedingte Formatierung, ist viel effektiver und wesentlich schneller als jede Zelle per foreach schleife durchlaufen und einfärben zu müssen.
Das Sheet kannst du ja ausblenden!
Du weist aber schon was ich mit "bedingte Formatierung" meine oder?
Das Sheet kannst du ja ausblenden!
Du weist aber schon was ich mit "bedingte Formatierung" meine oder?

Makro den Kopierbefehl für die expliziete Zelle mit einbinden
Einfaches kopieren aller benutzen Zellen des Sheets.ActiveSheet.UsedRange.Copy Sheets(1).Range("A1")
Excel - Mit bedingter Formatierung Zahlen in jeder Zelle vergleichen und farblich markieren

Du kannst doch ganze Ranges kopieren, warum machst du das einzeln?
Sheets("Trade_Ware").Range("B15:B30").Copy Destination:=Sheets("Protokoll").Range("A200")

Schön wenn man das auch mal erfährt, na dann:
Hiermit wird der Wert immer die nächste freie Zelle von unten in Spalte A geschrieben, denke das war es was du suchst.
Sheets("Trade_Ware").Range("B15").Copy Destination:=Sheets("Protokoll").Cells(Rows.Count, "A").End(xlUp).Offset(1,0)

Deswegen habe ich doch gesagt schreibe den vorherigen Wert am einfachsten immer in die selbe Zelle auf dem anderen Sheet, dann kannst du die Formatierung im Sheet Trade_Ware mit einer bedingten Formatierung auf Basis einer Formel lösen die dann so für Grün aussieht:
und entsprechend so für rot
Man kann hier zwar auch mit BEREICH.VERSCHIEBEN die letzte Zelle ermitteln, aber warum so umständlich wenns simpel geht.
=Trade_Ware!$B$15 > Protokoll!$A$200
=Trade_Ware!$B$15 < Protokoll!$A$200

Zitat von @Hagus57:
Es sollte der jeweilige neue Kurs nur dann in das nächste Arbeitsblatt kopiert werden, wenn sich die daneben befindliche Uhrzeit auch geändert hat. Ich bräuchte wohl eine Abfrage wie:
WENN Wert "Zelle Uhrzeit" > letzter Wert der selbigen Zelle DANN KOPIERE Wert der Kurs Zelle nach Arbeitsblatt2
Irgendwelche Ideen wie man das umsetzen könnte?
Dann mach bei jedem Update ebenfalls eine Kopie der Zeitzelle in dein anderes Blatt und vergleiche vor jedem Kopieren beide Zeiten miteinanderEs sollte der jeweilige neue Kurs nur dann in das nächste Arbeitsblatt kopiert werden, wenn sich die daneben befindliche Uhrzeit auch geändert hat. Ich bräuchte wohl eine Abfrage wie:
WENN Wert "Zelle Uhrzeit" > letzter Wert der selbigen Zelle DANN KOPIERE Wert der Kurs Zelle nach Arbeitsblatt2
Irgendwelche Ideen wie man das umsetzen könnte?
if Sheets("Trade_Ware").Range("C15").Value > Sheets("Protokoll").Range("B200").Value then
' hier deine Copy-Zeile einfügen
end if