'Hallo Hagus,
Falls du noch keine Lösung gefunden haben solltest, hier mal mein
"Denkansatz":
'leider hast du nichts geschrieben, auf welche Weise du an die
Börsenwerte kommst. Hast du Zugriff auf den hinterlegten Code?
Wenn ja gibt es dort sicher irgendwo eine Zeile wie
Range("A1").value = "www..." Ersetze diese Zeile durch
Dim Kurs As Double
Kurs = "www..."
WertVerarbeiten Range("A1"), Kurs
Füge nun ein Standardmodul ein, (Menü Einfügen --> Modul) wo du
die Subs WertSpeichern und WertVerarbeiten des folgenden Codes
hinterlegst.
Solltest du nicht an den Code rankommen, wird der Wert
wahrscheinlich per Formel gezogen. Du kannst dann per Code
prüfen ob sich der Wert geändert hat. Füge dazu im Modul
DieseArbeitsmappe diesen Code ein:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime Startzeit, "WertPruefen", Schedule:=False
End Sub
Private Sub Workbook_Open()
NeuerKurs
End Sub
sowie in einem Standardmodul (z.B. Modul1) diesen Code:
Dim AltWert As Double
Public Startzeit
Private Declare Function Beep Lib "kernel32" (ByVal Fq As Long,
ByVal Tm As Long) As Long
Sub WertVerarbeiten(Zelle As Range, Kurs As Double)
KleinerWechsel = 0.01
GroßerWechsel = 0.05
If Kurs < AltWert Then
Zelle.Interior.Color = 255
If Kurs < AltWert - KleinerWechsel Then
Beep 400, 150
ElseIf Kurs < AltWert - GroßerWechsel Then
Beep 250, 400
End If
ElseIf Kurs > AltWert Then
Zelle.Interior.Color = 13434828
If Kurs > AltWert + KleinerWechsel Then
Beep 600, 150
ElseIf Kurs > AltWert + GroßerWechsel Then
Beep 850, 400
End If
End If
WertSpeichern Kurs
NeuerKurs
Set AktBlatt = Sheets("Tabelle1")
AltWert = AktBlatt.Range("A1").Value
End Sub
Sub NeuerKurs()
'Startzeit = Now + TimeValue("0:00:05")
'Application.OnTime Startzeit, "WertPruefen"
End Sub
Sub WertPruefen()
Set AktBlatt = Sheets("Tabelle1")
WertVerarbeiten AktBlatt.Range("A1"), AktBlatt.Range("A1").Value
End Sub
Sub WertSpeichern(Kurs)
Set Blatt = Sheets("Tabelle2")
Spalte = Blatt.Cells(1, Columns.Count).End(xlToLeft).Column
If Blatt.Cells(1, Spalte) < Date Then
Spalte = Spalte + 1
Blatt.Cells(1, Spalte).Value = Date
End If
Zeile = Blatt.Cells(Rows.Count, Spalte).End(xlUp).Row
If InStr(9, Blatt.Cells(Zeile, Spalte), Kurs) = 0 Then
Zeile = Zeile + 1
Blatt.Cells(Zeile, Spalte).Value = Time & " " & Kurs
End If
End Sub
Zur Erklärung. Application.Ontime prüft alle 5 sekunden, ob
sich der Wert geändert hat. Mit Beep löst du einen Sound aus. Je
höher der erste Wert, desto höher der Ton, je höher der zweite Wert,
desto länger dauert der Ton. Damit du nicht alle 5 Sekunden von
Pieptönen genervt wirst, wird der Sound nur ausgelöst, wenn sich
der Kurs um einen bestimmten Wert verändert hat.
Damit hast du nun zwei mögliche Wege, dein Problem anzugehen.
Wie genau, du allerdings deinen Kurs ziehst, würde mich schon
auch interessieren. Vielleicht gibt es ja hier später mal jemanden
der etwas ähnliches umsetzen will.
Gruß Mr. K.