Laufzeitfehler '13': Typen unverträglich

  • Excel

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Rickjames5523.

    Laufzeitfehler '13': Typen unverträglich

    Hi zusammen,

    bin neu im Forum und habe folgendes Problem, welches ich weder über Google noch über die Suchfunktion hier im Forum klären konnte:

    Ich arbeite mit einer Excel-Liste welche mit einem Makro versehen ist.
    Das Makro gibt die Daten in ein Power Point Template ein.
    Dieser Befehl funktioniert auch für fast alle Zeilen nur bei manchen bekomme ich folgende Fehlermeldung:

    Laufzeitfehler '13': Typen unverträglich

    Der Befehl mit dem "Fehler" sieht wie folgt aus:

    Case "Abs_Dia_F"
    searchRes = Round(Sheets(1).Cells(row, Find_First("Abs_Dia", "A2:HZ2", 1)).Value, 0)

    Für eure Hilfe bedanke ich mich im Voraus!

    Grüße

    Daniel :)
    Ich bin kein VBA-Pro, aber entweder ist der Selector kein String (also das was bei "Select ..." steht) oder Round liefert nicht den gleichen Datentyp, wie searchRes einer ist (du verstehst hoffentlich was ich meine, mein Deutsch lässt im Moment zu wünschen übrig)
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    Ich denke du hast es auf den Punkt gebracht. In der Tat funktioniert der Befehl bei einer Zahlenformatierung und er scheitert sobald in der Zelle "Text" steht.
    Die Frage ist wie ich das Problem umgehen könnte :(

    Vielen Dank im Voraus!

    Rickjames5523 schrieb:

    searchRes = Round(Sheets(1).Cells(row, Find_First("Abs_Dia", "A2:HZ2", 1)).Value, 0)
    Das ist doppelt gefährlich, wenn nicht sichergestellt ist, dass Find_First (was macht diese Funktion?) eine gültige Spaltennummer zurückgibt.

    Rickjames5523 schrieb:

    wie ich das Problem umgehen könnte
    searchRes = Round(Val(Sheets(1).Cells(row, Find_First("Abs_Dia", "A2:HZ2", 1)).Value), 0)
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Die Spalten haben alle einen Namen, in dem Fall "Abs_Dia".
    Find_First sucht im ganzen Sheet nach dieser Spalte und gibt den Wert der Zelle in der Power Point wieder.
    Ich habe es mit deinem Befehl probiert. Leider ohne Erfolg.
    Habe mal "spaßeshalber" mit dem Zellenwert gespielt - von "#NV" auf "" geändert und prompt funktioniert der Befehl ohne Laufzeitfehler. Allerdings MUSS in der Zelle "#NV" stehen bleiben :(

    Vielen Dank für eure Ratschläge

    Rickjames5523 schrieb:

    von "#NV" auf "" geändert und prompt funktioniert der Befehl ohne Laufzeitfehler.
    Das meinte ich oben mit gefährlich.
    Das Find_First macht Mist.
    Das gehört abgefangen.
    Stichwort: If Range("A1").Text = "#NV" bzw. If IsError(Range("A1"))
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Ok. Ich glaube so langsam verstehe ich das Problem. Ich hab das Makro nicht geschrieben, d.h. ich kann auch nur interpretieren warum es so und so geschrieben wurde.

    Wie würde deiner Meinung nach der richtige "komplette" Befehl lauten? (Bzw. an welcher Stelle soll die ISTFEHLER-Prüfung stattfinden?)

    Vielen Dank im Voraus.