Anzeige
Archiv - Navigation
1604to1608
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

Problem mit Arrays / Laufzeitfehler 9

Problem mit Arrays / Laufzeitfehler 9
06.02.2018 16:10:13
Ich1986
Hallo Zusammen,
ich bin ziemlich neu im VBA und arbeite gerade an einem Code in dem ich versuche mit Vektoren/Arrays zu arbeiten. In der ersten Funktion möchte ich gerne aus einer Wertereihe eine Rendite ermitteln (Also Rendite = Aktueller Wert/vorheriger Wert -1; Ja das neue Array ist um einen Wert kürzer als das alte). Die länge der Arrays ist dabei nicht festgelegt (also soll das Array so viele Werte beinhalten wie Werte in den jeweiligen Spalten stehen).
Jetzt habe ich die Erfassung anscheinend schon in den Griff bekommen, aber bei der Berechnung kommt der Laufzeitfehler 9 heraus.
Hier ist mal der Code:

Public Sub Berechnung()
Dim BereichAk As Range
Dim ArrAkTR As Variant
Dim BereichRk As Range
Dim ArrRkTR As Variant
Dim ArrAkRenditeDis As Variant
Dim ArrRkRenditeDis As Variant
Dim AnzahlMonate As Integer
Dim i As Integer
Dim x As Integer
With Sheets("Erfassung")
Set BereichAk = .Range("a1:a" & .Cells(.Rows.Count, 1).End(xlUp).Row)
ArrAkTR = BereichAk
Set BereichRk = .Range("b1:b" & .Cells(.Rows.Count, 1).End(xlUp).Row)
ArrRkTR = BereichRk
End With
AnzahlMonate = UBound(ArrAkTR)
For i = 1 To (AnzahlMonate - 1)
x = i - 1
ArrAkRenditeDis(x) = (ArrAkTR(i) / ArrAkTR(x) - 1)
Next i
End Sub

Ihr habt sicherlich schnell eine Idee was hier nicht passt (Hoff)
Vielen Dank und schöne Grüße
Ich1986

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem mit Arrays / Laufzeitfehler 9
06.02.2018 16:42:11
Daniel
Hi
wenn du einen Zellbereich mit mehr als 1 Zelle einer Variantvariable zuweist, so wird immer ein zweidimensionales Array daraus, dh wenn du damit arbeiten willst, musst du immer Zeilen- und Spaltenindex angeben, auch wenn das Array nur eine Zeile oder eine Spalte hat.
wenn du ein Array zuweist:
arr = Range("A1:A100")
musst du die Einzelwerte immer mit
arr(x, 1)
ansprechen.
beachte weiterhin, dass der Startindex hierbei nicht 0, sondern 1 ist.
Gruß Daniel
AW: Problem mit Arrays / Laufzeitfehler 9
06.02.2018 16:54:01
Ich1986
Hi Daniel,
danke für Deine Hilfe. Ich habe jetzt im unteren Teil jeweils „,1“ zu den Array-Variablen hinzugefügt. Komme aber leider immer noch auf den gleichen Fehler (auch wenn ich ,0 teste).
AnzahlMonate = UBound(ArrAkTR)
For i = 1 To (AnzahlMonate - 1)
x = i - 1
ArrAkRenditeDis(x, 1) = (ArrAkTR(i, 1) / ArrAkTR(x - 1, 1))
Next i
Und gibt es in VBA die Möglichkeit das ganze direkt als Vektor zu deklarieren?
Vielen Dank
Anzeige
AW: Problem mit Arrays / Laufzeitfehler 9
06.02.2018 19:17:20
Daniel
Hi
ich hab dir doch erkärt: bei einem Array, welches du aus einem Zellbereich erzeugst, ist der kleinste Index (LBound) 1 (in Worten EINS)
wenn du mal deine Schleife durchgehst, dann bekommst du beim ersten Schleifendurchlauf
i = 1
x = 0
ArrAkTR(0 - 1, 1)

also
ArrAkTR(-1, 1)
dh hier stimmt deine Logik nicht.
was willst du denn genau machen?
wenn du einen Array-Wert mit dem davor liegendnen Array-Wert verrechnen willst, dann muss dieser Arraywert auch zum Array gehören.
Gruß Daniel
AW: Problem mit Arrays / Laufzeitfehler 9
07.02.2018 11:11:43
Ich1986
Hi Daniel,
danke für den Hinweis mit den Arrays aus Excel, das war mir so nicht klar.
Dann müsste es doch aber mit einem i = 2 funktionieren? Auch da bekomme ich den Fehler. Interessanterweise bekomme ich bei einem i=3 dann den Laufzeitfehler 13 angezeigt.
Das Ziel ist es in diesem Array Steigerungen (Performance/Rendite aus Preisreihen) zu berechnen um diese dann in VBA weiterzunutzen.
Vielen Dank nochmal für Deine Hilfe
Anzeige
AW: Problem mit Arrays / Laufzeitfehler 9
07.02.2018 16:16:12
Daniel
Naja, dass i = 2 nicht funktioniert, kannst du dir doch leicht selber ausrechnen.
Beim nächsten Fall wäre die Frage, ob der Arraywert, auf den du da zugreift, auch wirklich eine Zahl ist oder nicht noch der Text der Überschrift
Gruß Daniel
AW: Problem mit Arrays / Laufzeitfehler 9
07.02.2018 16:35:30
Ich1986
Hi Daniel,
sorry, aber jetzt stehe ich auf dem Schlauch. Wenn
i = 2
ist
x=i-1 = 1
Damit müsste im ersten Durchlauf der der zweite Wert im Array durch den ersten geteilt werden. Diese sollten, auch wenn erst bei 1 losgelaufen wird doch beide definiert sein?
Und ich habe das Sheet nocheinmal geprüft, nur Zahlen drin. Habe auch nochmal zum Test nur ganze Zahlen reingeschrieben, die beiden Fehler kommen trotzdem beharrlich weiter.
Übrigens vielen Dank für Deine bisherigen Hinweise und Deine Zeit!
Anzeige
AW: Problem mit Arrays / Laufzeitfehler 9
07.02.2018 21:24:59
Daniel
naja und wenn x = 1 ist, was ist dann x-1?
dein Code sieht ja so aus:
ArrAkRenditeDis(x, 1) = (ArrAkTR(i, 1) / ArrAkTR(x - 1, 1))
Gruß Daniel
AW: Problem mit Arrays / Laufzeitfehler 9
07.02.2018 21:38:43
Ich1986
N‘Abend Daniel,
vielen Dank fürs vom Schlauch schubsen!!! Jetzt ist der 9er Fehler weg. Hast Du auch eine Idee bezüglich des 13ers? Der kommt jetzt immer. Ich habe die Zellen schon gecheckt, das sind alles Zahlenwerte.
Vielen Dank und noch einen schönen Abend!
AW: Problem mit Arrays / Laufzeitfehler 9
07.02.2018 22:32:01
Daniel
dazu müsste ich jetzt deine Datei kennen.
Ich bin leider kein Hellseher und kann mich auch nicht auf deinen Rechner einhacken, um deine Daten zu prüfen.
Was genau ist denn der Inhalt deiner Variablen und der Arraywerte, wenn der Fehler auftritt?
Lass dir diese bitte anzeigen/ausgeben, dann bekommst du einen Hinweis, was die Fehlerursache sein könnte.
hierzu kannst du, wenn der Fehler auftritt und die entsprechende Zeile gelb markiert ist, im VBA-Editor über die Variablen fahren, dann sollte der Wert in der Bubblehelp angezeigt werden.
Oder du gehst ins Direktfenster und gibst dort
? ArrAkTR(x - 1, 1)
ein, dann wird dir der Variablen- oder Arraywert ausgegeben.
ich vermute mal, dass da irgenwo ein Text steht oder ein Fehlerwert (#NV, #Bezug) in den Ausgangsdaten steckt.
Gruß Daniel
Anzeige
AW: Problem mit Arrays / Laufzeitfehler 9
12.02.2018 09:15:12
Ich1986
Hi Daniel,
vielen Dank für Deine Hilfe. Habe jetzt am Wochenende die Lösung gefunden, die ich gerne hier auch für andere mit ähnlichen Problemen teilen möchte, gefunden.
Anscheinend muss bei VBA für ein Array die Größe definiert werden. Also einfach kurz die Zeile
ReDim ArrAkRenditeDis(0 To AnzahlMonate, 1 To 1)
Dann funktioniert es!
Vielen Dank nochmal an Daniel und schöne Grüße
Ich1986

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige