Wert aus einer anderen nicht geöffneten Arbeitsmappe "importieren"

  • Excel

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von LudwigM.

    Vielen Dank.
    Habe es so versucht, funktioniert aber nicht, es gibt den Fehler "Typen unverträglich".

    Visual Basic-Quellcode

    1. IIf(c Is Nothing, 0, IIf(IsNumeric(c.Offset(0, 3).Value), CSng((c.Offset(0, 3).Value)), 0))

    Wie gesagt gibt es aber immer noch einen Fehler in dieser Zeile, wenn der zusuchende String im Bereich nicht vorhanden ist.
    Ich hoffe, ihr könnt mir auch hier sagen was ich falsch mache...
    Mit einer If-Abfrage geht es jedoch, nur es müsste der Fall integriert werden, dass der STring nicht gefunden wurde.

    Visual Basic-Quellcode

    1. If IsNumeric(c.Offset(0, 3).Value) = True Then
    2. ergebnis = CSng(c.Offset(0, 3).Value)
    3. Else
    4. ergebnis = 0
    5. End If




    Danke
    Ludwig

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „LudwigM“ ()

    Ich habe gelsesen, dass IIf den True- und False-Part auswertet egal ob er zutrifft oder nicht, deswegen ist IIf für mich nicht geeignet.
    Normale If-Abfrage ist da wohl besser...

    Visual Basic-Quellcode

    1. If c Is Nothing Then ergebnis = 0 Else If IsNumeric(c.Offset(0, 3).Value) Then _
    2. ergebnis = CSng(c.Offset(0, 3).Value) Else ergebnis = 0

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „LudwigM“ ()

    LudwigM schrieb:

    Weiterhin habe ich erst jetzt bemerkt, dass es einen Fehler in der Zeile
    ergebnis = IIf(c Is Nothing, 0, Val(c.Offset(0, 3).Value))
    Stimmt. IIf berechnet wohl immer erst beide Zweige. Versuchs mit

    Visual Basic-Quellcode

    1. If c Is Nothing Then ergebnis = 0 Else ergebnis = c.Offset(0, 3).Value


    Edit: Zu spät gesehen, dass du es selbst schon bemerkt hast.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --