Laufzeitfehler 424 bei Makro
Hi Leute,
ich habe eine Tabelle in der in Spalte 1 und 4 Werte enthalten sind. Das folgende Makro soll dabei für einen Eintrag in Spalte 4 den nächsten passenden in Spalte 1 finden.
In Spalte 4 steht also meinetwegen "Auto", das Makro geht dann nach Spalte 1 und sucht ab der Zeile in der Auto steht die Spalte 1 nach dem Wert "Auto" ab. Wenn dieser Wert gefunden ist bricht das Makro ab und gibt die Zelle zurück. Ich habe bereits mit einer Überwachung festgestellt, dass das auch funktioniert, allerdings wird bei
Exit Function
mit dem Laufzeitfehler 424 abgerbochen. Ich kann ehrlich gesagt nicht nachvollziehen warum. Jemand eine Idee?
Hier das entsprechende Makro.
Private Function nextUBG(UBGrng As Range) As Range
Set nextUBG = UBGrng.Offset(0, -3)
Do While Not nextUBG.Value = UBGrng.Value
Set nextUBG = nextUBG.Offset(1, 0)
Loop
Exit Function
End Function
Grüße
Carsten
Antwort schreiben
Antwort 1 von Seradest vom 15.10.2019, 12:04 Options
PS: Das Exit Function kann ich mir auch sparen, ich weiß. Der Fehler kommt ohne dann eben erst bei End Function. Der Befehl ist da noch drin weil die Function ursprünglich noch was anderes machen sollte.
Antwort 2 von coros vom 15.10.2019, 12:19 Options
Hallo Carsten,
hast Du die Funktion mal als Einzelschritt (F8) durchlaufen lassen um zu sehen, wo der Fehler auftritt?
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 3 von Seradest vom 15.10.2019, 12:25 Options
Hi Oliver,
Ja habe ich, der Fehler kommt beim verlassen der Funktion, also bei End bzw. Exit Function
Grüße
Antwort 4 von coros vom 15.10.2019, 12:29 Options
Hallo Carsten,
das ist komisch. Leider weiß ich es dann auch nicht, denn ich habe keine Datei, an der ich Deine Funktion testen kann um zu schauen, warum dem so ist.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 5 von Seradest vom 15.10.2019, 12:40 Options
Das erstaunliche ist, ich habe eine zweite ganz ähnlich gestrickte Funktion, die keinen Fehler meldet und statt einer einzelnen Zelle einen ganzen Bereich zurückgeben soll. Die sieht dann so aus:
Private Function getlistrange(vRng As Range) As Range
Dim i As Integer
i = 1
Do While Not vRng.Offset(i + 1, 3).Value = ""
i = i + 1
Loop
Set getlistrange = Range(vRng.Offset(1, 3), vRng.Offset(i, 3))
End Function
Genau so einfach gestrickt, aber die funktioniert fehlerfrei.
Die Datei kann ich leider nicht rausgeben, aber wenn ich keine Lösung finde werde ich wohl mal gucken müssen ob ich den Fehler auch in einer Beispieldatei hinbekomme, die ich dann zur Verfügung stellen kann.
Antwort 6 von Seradest vom 15.10.2019, 12:46 Options
Ok, Problem gefunden. War nicht die Funktion sonder der Aufruf der das Problem verursacht. Und zwar brauche ich den Funktionswert den diese Funktion ermittelt für einen rekursiven Prozeduraufruf und der funktioniert offenbar nicht wie er soll. VBA kann doch rekursive Aufrufe oder?^^
Antwort 7 von Seradest vom 15.10.2019, 12:50 Options
Und ich nochmal :)
Habe das Problem gelöst, funktioniert alles, naja abgesehen von ein paar Kleinigkeiten die ich aber hinbekomme^^ Hatte schon Angst ich kriege mein Treeview nicht mehr gefüllt.
Wenn man bloß immer gleich wüsste wo man hingucken muss...
Trotzdem danke für die Hilfe.
Grüße
Carsten