Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
204to208
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
204to208
204to208
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Aktien Hi Lo Kurse automatisieren

Aktien Hi Lo Kurse automatisieren
16.01.2003 18:32:26
Norbert
Hallo in die Runde!
Nepumuk hat mir in diesem Forum zu einer Automatisierung verholfen. Ich lese Kurse per Hauppauge-Karte (Fernsehen und Teletext) in ein Spreadsheet ein und will davon auch die Höchst und Tiefstkurse des Tages automatisch in der gleichen Zeile neben der Spalte der aktuellen Kurse mit angezeigt bekommen.

Folgende von Nepumuk erstellte Codes funktionieren bei mir, wobei "Kurs" sich auf das Blatt in der Tabelle bezieht.

Beitrag von Nepumuk vom 15.01.2003 - 10:12:08:
Als Antwort auf: Neue Zahl in Zelle automatisch erhöhen lassen
Hallo Norbert, wenn ich das richtig verstehe, willst du in C848 das maximum von E848 und in D848 das minimum, wobei in E848 eine Formel steht. Das kannst du für die Zeilen 848 und 849 so machen (3, 4, und 5 bezieht sich auf Spalte C, D und E - in E (also 5) steht der aktuelle Kurs):

Mit ALT F11 VB öffnen und folgendes eingeben === damit es mit Formeln in Zellen funktioniert:

Im Klassenmodul "Diese Arbeitsmappe" folgenden Code:

Option Explicit
Private Sub Workbook_Open()
Kursaenderung
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.OnTime Zeit, "Kursaenderung", , False
End Sub


In ein "normales" Modul:

Option Explicit
Public Zeit As Date
Public Sub Kursaenderung()
With ThisWorkbook.Sheets("Kurs")
If (Hour(Time) > 13 And Minute(Time) > 33) Or Time = "00:00:00" Then
If .Cells(848, 5) > .Cells(848, 3) Or .Cells(848, 3) = "" Then .Cells(848, 3) = .Cells(848, 5)
If .Cells(848, 5) < .Cells(848, 4) Or .Cells(848, 4) = "" Then .Cells(848, 4) = .Cells(848, 5)
Else
If .Cells(849, 5) > .Cells(849, 3) Or .Cells(849, 3) = "" Then .Cells(849, 3) = .Cells(849, 5)
If .Cells(849, 5) < .Cells(849, 4) Or .Cells(849, 4) = "" Then .Cells(849, 4) = .Cells(849, 5)
End If
End With
Zeit = Time + TimeSerial(0, 0, 30)
Application.OnTime Zeit, "Kursaenderung"
End Sub

dieses Programm wird dann mit dem öffnen der Mappe in eine rekursive Schleife geschickt, die sich im 30 Sekunden-Takt selbst aufruft und die Werte in den max./min.-Zellen aktuallisiert. Das dürfte in jedem Fall reichen um keinen kursstruz zu verpassen. Ausserdem wechselt ab 13:33 Uhr wie erwünscht, die Ausgabe von Zeile 849 in Zeile 848 zurück und ab 0:00 Uhr wieder in die Zeile 849.

Mit freundlichen Grüssen
Nepumuk

https://www.herber.de/forum/messages/204269.html

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Aktien Hi Lo Kurse automatisieren
16.01.2003 19:33:11
Norbert
Nepumuk entschuldige, ich kann sehr hartnäckig sein, aber ich glaube ich geb das auf. Das Makro will nur wenn es selbst will und nicht wann ich.

Habe mal den leicht durch den Namen "KursaenderungYEN" abgeänderten Code in die zweite Tabelle eingefügt. Dabei folgt aber dann die Meldung "Typen unverträglich" Laufzeitfehler 13 ab "Then
If .Cells(848, 5) > .Cells ..." u.s.w. wenn beide Tabellen gleichzeitig laufen. Für sich alleine hat die Tabelle funktioniert.

Doch nachdem ich den Code und Modul wieder gelöscht habe funktioniert jetzt auch der erste Code in der "pivot.xls"-Tabelle nicht mehr (keine Fehlermeldung aber wieder "tot")

Im Klassenmodul "Diese Arbeitsmappe" (nur für die Yen-Tabelle) folgenden Code:

Option Explicit
Private Sub Workbook_Open()
KursaenderungYEN
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.OnTime Zeit, "KursaenderungYEN", , False
End Sub


In ein "normales" Modul:

Option Explicit
Public Zeit As Date
Public Sub KursaenderungYEN()
With ThisWorkbook.Sheets("Kurs")
If (Hour(Time) > 13 And Minute(Time) > 33) Or Time = "00:00:00" Then
If .Cells(848, 5) > .Cells(848, 3) Or .Cells(848, 3) = "" Then .Cells(848, 3) = .Cells(848, 5)
If .Cells(848, 5) < .Cells(848, 4) Or .Cells(848, 4) = "" Then .Cells(848, 4) = .Cells(848, 5)
Else
If .Cells(849, 5) > .Cells(849, 3) Or .Cells(849, 3) = "" Then .Cells(849, 3) = .Cells(849, 5)
If .Cells(849, 5) < .Cells(849, 4) Or .Cells(849, 4) = "" Then .Cells(849, 4) = .Cells(849, 5)
End If
End With
Zeit = Time + TimeSerial(0, 0, 10)
Application.OnTime Zeit, "KursaenderungYEN"
End Sub

Gruß, Norbert (jetzt doch schon leicht entnervt)

Anzeige
Re: Aktien Hi Lo Kurse automatisieren
16.01.2003 19:40:03
Norbert
Ich glaube es nicht, jetzt läuft das erste Makro doch ab - nicht nach 10 oder 30 Sekunden, sondern plötzlich nach ca. 2 Minuten hat sich (im augenblicklichen Fall) der Höchstkurs eingetragen.

Also retour - das Makro funktioniert doch. Muß irgendwie mit dem Kursabruf zusammenhängen, vielleicht blockiert das für kurze Zeit dieses Makro.

Gruß, Norbert

Re: Aktien Hi Lo Kurse automatisieren
17.01.2003 13:06:46
Norbert
Tatsächlich - mein uraltes DDE-Makro aus 1992 ist mit dem HiLO-Kurseintargungsmakros in die Quere gekommen. Im DDE-Makro wurde der fehler behoben und nun klappt alles wie gewollt.

Also der VB-Code von Nepumuk funktioniert einwandfrei.

Möchte das nur hier noch mal angefügt haben.

Gruß, Norbert

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige