1.2k Aufrufe
Gefragt in Tabellenkalkulation von ahorn38 Experte (3.2k Punkte)
Hallo,

ich habe in einem Code u.a. die Zeile

If Not IsError(Cells(i, k + 1) + (1 / 24)) Then Sheets("SE").Cells(m, 5) = Cells(i, k + 1) + (1 / 24)

Ich weiß, dass dabei der geprüfte Ausdruck Cells(i, k + 1) + (1 / 24) einen Fehler erzeugt wegen Typenunverträglichkeit. Allerdings dachte ich, dass mit der Funktion if not IsError.... diese Zeile nicht zum Programmfehler führt. Oder anders ausgedrückt: Wenn der Ausdruck Cells(i, k + 1) + (1 / 24) zu einem Fehler führt, soll diese Programmzeile übersprungen werden.
Hat jemand einen Tipp?
Danke und Gruß Andreas

3 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Andreas,

leider schreibst Du nicht, was in Zelle Cells(i, k + 1 steht und wie diese formatiert ist.
Meine Vermutung ist, dass da eine Uhrzeit steht und die Zelle auch dem entsprechend formatiert ist.

Wenn das so ist, reicht dann dieser Code

Sheets("SE").Cells(m, 5) = Cells(i, k + 1) + 1 / 24

Wenn meine Vermutung nicht stimmt, müsstest Du Dich dazu noch mal aufklärend äußern.

Übrigens:
Da auch in VBA der Grundsatz "Punktrechnung geht vor Strichrechnung" gilt, kannst Du bei (1/24) auf die Klammern verzichten.

Gruß
Rainer
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Andreas,

kann es sein, dass in der Zelle Cells(i, k + 1) auch Text vorkommen kann? Dies würde auf jeden Fall zu einem Fehler führen, wenn du etwas addieren willst.
Falls dem so ist, dann prüfe vorher, ob der Zellinhalt numerisch ist

If IsNumeric(Cells(i, k + 1)) Then


Bis später,
Karin
0 Punkte
Beantwortet von ahorn38 Experte (3.2k Punkte)
Hallo Rainer, hallo Karin,

vielen Dank für Eure Antworten - ihr hattet beide Recht mit euren Vermutungen (es ist immer schwierig den Sachverhalt mit wenig Worten verständlich zu machen....).
Die Abfrage "If is numeric..." anstelle "if isError..." hat die Lösung gebracht.
Eure Tipps und Antworten haben mir immer geholfen!! Dafür vielen Dank!! Viele Grüße und frohe Weihnachten!
Andreas
...