PDA

Vollständige Version anzeigen : Anwendungs- oder objektdefinierter Fehler


STUBA
10.07.2012, 22:57
Guten Abend ;)
Ich habe versucht eine Makro zu erstellen, dass mir das Minimum aus einem Bereich herausfiltert. Leider erscheint dann oben genannter Laufzeitfehler 1004.
Kann mich da jemand über meinen Fehler aufklären?

Uwe (:o)
10.07.2012, 23:17
Hallo,
so auf die Schnelle würde ich mal tippen, dass das Problem darin liegt, dass Du zwar der Variablen Ende etwas zuweist, dann aber in der For-Next Schleife auf den Wert der Variablen EndeZeile zurückgreifst, die noch nicht belegt ist.
Habe ich Recht?
Sonst lade mal eine Beispielmappe statt eines Bildes hoch, das lässt sich einfacher checken.

STUBA
11.07.2012, 08:22
Hallo Uwe,
vielen Dank für deine Antwort.
Ich bin gerade auf Arbeit,weshalb ich erst heute Abend eine Beispieldatei hochladen könnte.
Ich habe schon einmal aus dem Forum einen ähnlichen Code erhalten, in dem ...ZEILE auch nicht extra deklariert war.
Ich dachte, dass man ZEILE einfach nur an die andere Variable, hier also Ende, anhängt, um nur die Zeile zu bekommen.
Wenn ich debugge, dann erscheint übrigens Zeile:
If Cells(l,2)<Cells (l-1,2) gelb hinterlegt.

Uwe (:o)
11.07.2012, 14:24
Hallo,
Zitat: "Wenn ich debugge, dann erscheint übrigens Zeile:
If Cells(l,2) ".
DAS könnte daran liegen, dass auch der Variablen Minimum kein Wert zugewiesen ist.
Am besten deklarierst Du erstmal alle Variablen am Anfang ordentlich.
Als erste Zeile vor dem Sub solltest Du auch "Option Explicit" einfügen, dann entgeht Dir nichts.
Und dann schaust Du, wenn ein Fehler auftritt, welchen Wert die Variablen in DEM Moment haben (das siehst Du, wenn Du den Mauszeiger im Debugmodus einen Moment auf der Variablen lässt).
Und wenn Du ein Beispiel hochlädst, dann beschreibe noch mal genau, was das Makro eigentlich "erledigen" soll.
Der Aufbau ist ziemlich verwirrend.

STUBA
11.07.2012, 18:12
Also hier wäre nochmal eine Beispieldatei mit Erklärung ;)

In der Datei sind zweimal identische Datenreihen eingegeben.
In der ersten Reihe bei Zeile 10 startend werden die Signale 1,-1 und 0 in Spalte F geliefert. Das bedeutet z.B. ich bekomme ein Kaufsignal durch eine 1 am 17.05.2012 und kann dementsprechend zum 18.05.2012 zum Kurs 6255 einsteigen. Am 18. und 21. habe ich immer noch eine 1 als Signal, weshalb ich weder dazukaufe noch verkaufe. Am 22. bekomme ich aber durch die -1 ein Verkaufssignal, was bedeutet ich verkaufe zum 23. zum Kurs von 6352. Nun will ich nicht die Performance ausrechnen, sondern den maximalen Drawdown, d.h. ich bin zu 6255 eingestiegen, gab es einen niedrigeren Kurs und wenn ja, was war der niedrigste Kurs, solange das Signal angehalten hat. Dann sollte nämlich die Berechnung (niedrigster Kurs bis Signalwechsel - Einstiegskurs)/Einstiegskurs durchgeführt werden.
In meiner Datei folgt nun in Spalte F eine -1, das heißt ich gehe Short und profitiere somit an Kurseinbrüchen. Dementsprechend sieht die Berechnung etwas anders aus(Einstiegskurs-höchster Kurs bis Signalwechsel)/Einstiegskurs.
Bei einer 0 als Signal soll nichts berechnet werden.
Nach den 0ern kommt bei mir wieder eine Reihe 1er. D.h. Einstiegskurs wäre am 05.06 die 6000. Letzter Kurs des gleichen Signals wäre hier am 11.06 die 6256. Nun soll hier also nach dem Minimum der Zeilen 26 bis einschließlich 29 geschaut werden, was hier am 07.06 mit einem Wert von 5800 der Fall ist. Deshalb folgt die Berechnung (5800-6000)/6000. Das Ergebnis soll nun in Spalte F einige Zeilen weiter unten ausgegeben werden, auf Höhe des gleichen Datums wie das Minimum. Deshalb ist die zweite und erste Zahlenreihen identisch.
Spalten C bis D sind eig. überflüssig.

Verstehst du, was ich brauche?
Danke schon einmal fürs Durchlesen!

Uwe (:o)
12.07.2012, 13:05
Hallo,
sorry, aber da bin ich "draußen".
Zwei der Fehler in Deinem Code hatte ich Dir gezeigt.
Die Datei, die Du hochgeladen hast ist eine .xlsx ohne Code.

Ich hoffe, ein Anderer kann Dir weiterhelfen.