Clever-Excel-Forum

Normale Version: VBA - Nachkommastellen werden automatisch gerundet
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

wohl für die Meisten ein kleines Problem ...
Ich habe folgende Schleife konstruiert:

Dim i As Variant
    With ActiveSheet
      For i = 217 To 2 Step -1
         If Val(.Cells(i, 22).Value) = "0." Then .Rows(i).Delete
      Next
   End With

Funktioniert soweit, nur werden Zelleinträge mit 0 und Nachkommastellen automatisch abgerundet und somit auch mit gelöscht.
Wie lautet bitte der genaue Befehl?

Danke und lieben Gruss … Elmar
Hallöchen,

Da Du mit Val eine Zahl wiedergibst, solltest Du auch mit einer Zahl vergleichen, also mit 0 und nicht mit "0.".
Herzlichen Dank für deine Rückmeldung,

deine Überlegung ist sicher richtig und habe ich auch schon ausprobiert.
Trotzdem befinden sich in meiner Tabelle zwei Beträge < 1   (0,10 und 0,90) und die werden mit gelöscht.
Das sollte so nicht sein.

Trotzdem Danke … vielleicht hast noch eine andere Idee.

lg. Elmar
Moin!
Warum filterst Du Spalte V nicht nach 0 und löscht die sichtbaren Zeilen?
Dürfte auch erheblich schneller als die Schleife sein.

Ansonsten zeige mal die Datei.

Gruß Ralf
Hallöchen,

mit
If Val(.Cells(i, 22).Value) = "0" Then .Rows(i).Delete
sollten nur 0-Werte gelöscht werden. Es gibt eventuell einen Stolperstein mit dem Dezimaltrennzeichen.
z.B.
0,11 liefert bei Val 0
0.11 liefert bei Val 0,11

ich würde da eventuell erst mal auf isnumber prüfen und wenn ja, direkt vergleichen.
Ist es Text, dann ggf. was in der Art val(replace(.cells(…),",","."))

if isnumber(.Cells(…)) then
if .cells(…)=0 then
else
if val(replace(.cells(…),",",".")) = 0 then ...
end if
Hüstel!
IsNumeric()
Hallo und danke ...

so habe ich's hinbekommen:

With ActiveSheet
      For i = 217 To 2 Step -1
      If Val(Replace(.Cells(i, 22), ",", ".")) = 0 Then
      If Val(.Cells(i, 22).Value) = 0 Then .Rows(i).Delete
      End If
      Next
   End With

Herzlichen Dank nochmals … hast mir sehr geholfen.

lg. Elmar