PDA

Vollständige Version anzeigen : vba array prüfen


ktver
30.08.2017, 09:51
Hallo,

ich habe mal eine kleine Frage.
Ich möchte mittels folgendem Code überprüfen, ob ein Index eines Arrays existiert:
workingtime = IIf(UBound(workingtimeMinutes) = 1, 1, 0)

Ergebnis: 0 << wie erwartet, denn den Index 1 gibt es nicht.

Wenn ich jetzt also den Code folgend ändere:
workingtime = IIf(UBound(workingtimeMinutes) = 1, CInt(workingtimeMinutes(1)), 0)
Erhalte ich die Fehlermeldung: "Index außerhalb des gültigen Bereichs"

Warum? Das Ergebnis müsste doch ebenfalls 0 sein.
Auch lt. Lokal-Fenster gibt es nur workingtimeMinutes(0), aber nicht workingtimeMinutes(1).

Heidjer
30.08.2017, 10:40
Wenn ich jetzt also den Code folgend ändere:
workingtime = IIf(UBound(workingtimeMinutes) = 1, CInt(workingtimeMinutes(1)), 0)
Erhalte ich die Fehlermeldung: "Index außerhalb des gültigen Bereichs"

Warum? Das Ergebnis müsste doch ebenfalls 0 sein.
Auch lt. Lokal-Fenster gibt es nur workingtimeMinutes(0), aber nicht workingtimeMinutes(1).

Weil du auf einen Index zugreifen willst (siehe rote Markierung), den es - wie du selber gesagt hast - gar nicht gibt. Nämlich den Index 1!

ktver
30.08.2017, 10:59
Okay.
Aber, dieser Fall dürfte ja gar nicht ausgewertet werden, sondern nur die Else-Anweisung, weil es den Index ja nicht gibt/die Bedingung nicht erfüllt werden konnte.

Es scheint so, dass die IF-Else-Kurzschreibweise immer beide Fälle auswertet, bevor der richtige Fall dann angenommen wird.
Bei der Normalschreibweise funktioniert das wie erwartet.

Kann das jemand bestätigen?

aloys78
30.08.2017, 11:14
Hallo,

Du vermutest richtig ! Siehe dazu IIF vs IF (http://www.fmsinc.com/free/newtips/net/nettip33.asp)

Gruß
Aloys

ktver
30.08.2017, 11:21
Ah, alles klar.
Wieder was gelernt.
Danke.