Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1796to1800
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
Inhaltsverzeichnis

Laufzeitfehler VBA Hilfe

Laufzeitfehler VBA Hilfe
15.12.2020 11:39:45
Rainer-Franz
Liebe Forums-Gemeinde,
nachfolgendes läuft bis zum Fehler einwandfrei. Am Ende meiner Nerven. Ihr seid meine letzte Hoffnung, ich kann nicht die Ursache im Laufzeitfehler beim Output finden, 4. letzte Codezeile von unten.
Über Vorschläge wäre ich sehr dankbar.
Liebe Grüße
Rainer
Sub Runthis()
Dim high As Range, low As Range, close1 As Range
Dim output As Range, n As Long, band_factor As Double
Set high = Range("C2:C1001")
Set low = Range("D2:D1001")
Set close1 = Range("E2:E1001")
Set output = Range("H2:H1001")
n = Cells(1, 7) '5 'number of historical periods to look at needed for certain indicators
band_factor = 1.5
CCI_1 high, low, close1, output, n, band_factor
End Sub
Sub CCI_1(high As Range, low As Range, close1 As Range, output As Range, n As Long, band_factor  _
As Double)
output(0, 1).Value = "Typical Price"
high0 = high(1, 1).Address(False, False)
low0 = low(1, 1).Address(False, False)
close0 = close1(1, 1).Address(False, False)
output(1, 1).Value = "=(" & high0 & "+" & low0 & "+" & close0 & ")/3"
output(1, 1).Copy output
output(0, 2).Value = "Simple Moving Average"
SMARange = Range(output(1, 1), output(n, 1)).Address(False, False)
output(n, 2).Value = "=average(" & SMARange & ")"
output(n, 2).Copy output.Offset(0, 1)
output(0, 3).Value = "Deviation"
TP = output(n, 1).Address(False, False)
SMARange = output(n, 2).Address(False, False)
output(n, 3) = "=abs(" & TP & "-" & SMARange & ")"
output(n, 3).Copy output.Offset(0, 2)
output(0, 4).Value = "Mean Deviation"
DevRng = Range(output(n, 3), output(n * 2 - 1, 3)).Address(False, False)
output(n * 2 - 1, 4).Value = "=average(" & DevRng & ")"
output(0, 5).Value = "CCI"
TP = output(n * 2 - 1, 1).Address(False, False)
SMA = output(n * 2 - 1, 2).Address(False, False)
MeanDev = output(n * 2 - 1, 4).Address(False, False)
'CCI = output(n * 2 - 1, 5).Address(False, False)
' Hier erhalte ich den Laufzeitfehler - Hilfe.
output(n * 2 - 1, 5).Value = "=(" & TP & "-" & SMA & ")/(" & band_factor & "*" & MeanDev & ")"
Range(output(n * 2 - 1, 4), output(n * 2 - 1, 5)).Copy output.Offset(0, 3)
Range(output(1, 2), output(n - 1, 5)).Clear
Range(output(n, 4), output(n * 2 - 2, 5)).Clear
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler VBA Hilfe
15.12.2020 11:55:44
Daniel
Hi
Und der Rest vorher funktioniert fehlerfrei?
Welchen Wert hat n wenn der Fehler auftritt?
Kannst du die Datei mal hochladen?
Gruß Daniel
AW: Laufzeitfehler VBA Hilfe
15.12.2020 12:36:57
MCO
Hallo!
Möglicherweise ist es ja nur marginal, aber gibt man Formeln nicht vor mit .formula oder .formulalocal?
Wahrscheinlich nicht die Ursache deines Problems, da du das ja oben auch schon "verbrochen" hast.
Versuche den Fehler mal einzugrenzen indem du alle Variablen mal prüfst, welchen Wert sie an der stelle haben: STOP in der Zeile darüber schreiben und dann mit der Maus auf den Wert zeigen, (nicht klicken). Das Überwachungsfenster wäre eine weitere Möglichkeit die Variablen zu bewerten.
Gruß, MCO
Anzeige
AW: Laufzeitfehler VBA Hilfe
15.12.2020 13:20:17
Rainer-Franz
Hallo,
herzlichen Dank für die zeitnahen Antworten.
N ist mit 5 definiert. Habe mal die Datei hochgeladen. Dachte erst es liegt an der Syntax, aber wohl eher nicht.
Nehme ich die Fehlerzeile raus, funktioniertes bis auf die Berechnung des eigentlich gewünschten CCI in Spalte L, testet mal selbst.
Freue mich auf weitere Hilfe und bedanke mich vorab.
Liebe Grüße
Rainer
AW: Laufzeitfehler VBA Hilfe
15.12.2020 15:40:48
Rainer-Franz
Hallo,
ein Fehler gefunden, band_factor Wert war nicht in "", manchmal den Wald vor Bäumen nicht...jetzt gehts fast, aber band_factor = "0.015" wird nicht mit Dezimalstelle, sondern mit der ABS Zahl 15 gerechnet. Hier die dann aus:
output(n * 2 - 1, 5).Value = "=(" & TP & "-" & SMA & ")" & "/" & "(" & band_factor & "*" & MeanDev & ")"
die Zelle:
=(H20-I20)/(15*K20) ..weshalb nicht mit 0,015? Habt Ihr noch Ideen?
Nochmals Danke und schöne gesunde Zeit.
Herzliche Grüße
Rainer
Anzeige
AW: Laufzeitfehler VBA Hilfe
15.12.2020 15:57:43
Rainer-Franz
..auf unorthodoxe Weise gelöst mit:
output(n * 2 - 1, 5).Value = "=(" & TP & "-" & SMA & ")" & "/" & "(" & "0.015" & "*" & MeanDev & ")"
band_factor ist ohnehin bei mir immer 0,015-
Schöne gesunde Zeit und herzliche Grüße
Rainer
AW: Laufzeitfehler VBA Hilfe
15.12.2020 18:01:57
Daniel
Hi
man kann die Formel auch mit .VALUE in die Zelle schreiben, man muss dann die gleiche Syntax verwenden wie bei .Formula, dh englische Funktionsnamen, Komma als Parametertrennzeichen und Punkt als Dezimalzeichen.
Dein Problem dürfte die Automatische Typumwandlung der Zahl band_factor in den String sein.
Hier ist in VBA jetzt nicht immer ganz eindeutig, ob hierfür der Interantionale Punkt oder das deutsche Komma verwendet wird.
Wenn es der Punkt ist, dann ist es für .Formula/.Value das Tausendertrennzeichen bzw wird einfach ignoriert und daher dann die 15.
wenn du den Faktor aus der Variable übernehmen willst, musst du entweder mit .FormulaLocal arbeiten, oder wenn der Code international laufen soll, sicherstellen das der Punkt als Dezimalzeichen verwendet wird.
also statt … & band_factor & … dann … & Replace(CStr(band_factor), ",", ".") & …
Gruß Daniel
Anzeige
AW: Laufzeitfehler VBA Hilfe
16.12.2020 08:28:51
Rainer-Franz
Guten Morgen Daniel,
guten Morgen an Alle,
besten Dank Daniel, ja, korrekt. Sehr gute Lösung von Dir. Funktioniert prima.
Nochmals DANKE, dies ist ein Top-Forum hier!
Kurz in die Runde noch....Es kursiert das Gerücht, Microsofts künftige Excel-Versionen sollen wohl kein VBA mehr ermöglichen. Kann dies zutreffend sein?
Wünsche schon einmal Gesundheit und Glück für 2021, sowie eine besinnliche wunderschöne Weihnachtszeit trotz aller widriger Corona-Umstände.
Rainer

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige