Microsoft Excel

Herbers Excel/VBA-Archiv

Fehlerabfangen, wenn bei Subtraktion Wert = String | Herbers Excel-Forum


Betrifft: Fehlerabfangen, wenn bei Subtraktion Wert = String von: Peter
Geschrieben am: 15.01.2010 13:37:55

Guten Tag

Sowohl .Cells(i, XXXs) als auch (i, XXXr) enhalten in der Regel Zahlen, manchmal auch ein String.
Wenn in der einen oder anderen Zelle ein String enthalten ist, soll der Variable XXXdiff 0 zugewiesen werden.

Das funktioniert aber nicht, denn die Codezeile if IsError ... kann nicht ausgewertet werden ( --> "<li></li>Typen unverträglich"), wenn die eine Zeile ein String enthält. Wie muss der Code hier lauten? Die Variable XXXdiff habe ich als Double dimensioniert. Es handelt sich um einstellige Zahlen mit 4 Nachkommastellen. Ist das der richtige Typ?

Danke für eine Antwort auf diese beiden Fragen.

Gruss, Peter

With ActiveSheet

'schleife (von unten nach oben!)
For i = zEnd To zAnf Step -1

If IsError(XXXdiff = .Cells(i, XXXs) - .Cells(i, XXXr)) Then
XXXdiff = 0
Else
XXXdiff = .Cells(i, XXXs) - .Cells(i, XXXr)
End If

If XXXdiff < 0 And .Cells(i, UMSf) < 0 Then
.Cells(i, FACs) = -.Cells(i, FACs)
Else
.Cells(i, FACs) = 0
End If

If .Cells(i, DATs) = "" Then .Cells(i, FACs) = ""

Next i
End With

If XXXdiff < 0 And .Cells(i, UMSf) < 0 Then
.Cells(i, FACs) = -.Cells(i, FACs)
Else
.Cells(i, FACs) = 0
End If
Next i

  

Betrifft: AW: Fehlerabfangen, wenn bei Subtraktion Wert = String von: Ptonka
Geschrieben am: 15.01.2010 13:46:04

Hallo

ich würde die Abfrage nach der Zahl machen.

Also:

If IsNumeric(Cells(i, XXXs).value) = False then
XXXdiff = 0
goto weiter
end if

If IsNumeric(Cells(i, XXXr).value) = False then
XXXdiff
goto weiter
end if

Das musst DU nur noch in Dein Makri einbauen.

Gruß,
Ptonka


  

Betrifft: AW: Fehlerabfangen, wenn bei Subtraktion Wert = String von: Peter
Geschrieben am: 15.01.2010 13:54:48

Hallo Ptonka
Danke für dein Beitrag. Die Erwähnung von ISNUMERIC hat mich auf folgende Lösung gebracht:

If IsNumeric(.Cells(i, XXXs)) And IsNumeric(.Cells(i, XXXr)) Then
NAVdiff = .Cells(i, XXXs) - .Cells(i, XXXr)
Else
XXXdiff = 0
End If

Gruss, Peter


  

Betrifft: AW: Fehlerabfangen, wenn bei Subtraktion Wert = String von: Ptonka
Geschrieben am: 15.01.2010 14:51:49

Hi Peter,

das ist natürlich die bessere Variante. Viel kompakter und logisch besser aufgebaut.
Prima! Freut mich, Dich auf den Weg gebracht zu haben.

Gruß,
Ptonka


Beiträge aus den Excel-Beispielen zum Thema "Fehlerabfangen, wenn bei Subtraktion Wert = String"