VBA: Zellinhalt auslesen und löschen

Moderator: ModerationP

VBA: Zellinhalt auslesen und löschen

Beitragvon Gast » 19. Aug 2019, 11:02

VBA:
Hallo,

ich möchte in einer Zelle einen Wert auslesen.
Wenn dieser Wert ein Fehler ist (NV/WERT/DIV0/...) soll er den Zellinhalt löschen.
Gleiches soll er machen, wenn der Wert = 0 ist.

Folgenden Code habe ich entworfen. Manchmal funktioniert es, manchmal wird mir immer wieder ein Fehler angezeigt (Lauzeitfehler 13, Fehler 2015)
Wie kann ich dies reparieren?

Code: Alles auswählen
Sub Makro1()
   
Dim cell As Range

For Each cell In Selection
If IsNumeric(cell) = False Or cell.Value = 0 Then
    cell.ClearContents
    End If
    Next
   
End Sub
Gast
 

Re: VBA: Zellinhalt auslesen und löschen

Beitragvon Ralf A » 19. Aug 2019, 11:11

Hi,

verwende statt IsNumeric besser IsError
Dann aber nicht auf false testen! Denn gelöscht werden soll ja nur dann, wenn IsError = Wahr ist....
Ciao, Ralf
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.

Bild
Ralf A
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 561
Registriert: 17. Mär 2018, 11:47

Re: VBA: Zellinhalt auslesen und löschen

Beitragvon slowboarder » 19. Aug 2019, 11:17

Hi

das Problem ist, dass sich Zellen mit Fehlerwert nicht so ohneweiters abfragen lassen wie normale Werte, die brauchen immer eine Spezialbehandlung, sonst gibts nen Fehler.
dh du müsstest hier zuerst nach Fehler und dann nach 0 in zwei getrennten IF-Abfragen prüfen.

ich würde hier auch gar keine Schleife machen, sondern so vorgehen, da ich mal davon ausgehe, dass in den Zellen keine Formeln mehr stehen sondern feste Werte:

Code: Alles auswählen
Selection.Replace "#*", "", xlwhole
Selection.Replace "0", "", xlwhole


Gruß Daniel
slowboarder
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 25932
Registriert: 18. Apr 2009, 13:33

Re: VBA: Zellinhalt auslesen und löschen

Beitragvon Gast » 19. Aug 2019, 11:50

Danke für eure Beiträge.
weder IsError noch die Trennung in zwei IF-Abfragen funktionieren bei mir.

ich würde hier auch gar keine Schleife machen, sondern so vorgehen, da ich mal davon ausgehe, dass in den Zellen keine Formeln mehr stehen sondern feste Werte:

leider stehen in den Zellen Formeln drin.


Ziel des Ganzen ist bspw. die Berechnung von Werten in Spalte C, der sich aus Werten der Spalten A und B zusammensetzt.
Die Zeilen, in denen die Berechnung einen Fehler ausweist oder in denen nichts drin steht (daher auch die Abfrage = 0) sollen gelöscht werden.
Gast
 

Re: VBA: Zellinhalt auslesen und löschen

Beitragvon slowboarder » 19. Aug 2019, 12:38

Hi
die Formeln mit Fehler kannst du löschen über:

Code: Alles auswählen
Selection.SpecialCells(xlcelltypeformulas, 16).ClearContents


0-Werte könntest du über den Autofilter filtern nun dann löschen.

wobei ich es wahrscheinlich für sinnvoller halten würde die Fehler in der Formel zu eleminieren:

Code: Alles auswählen
=WennFehler(deineFormel;"")


bei den 0-Werten (bezug auf leere Zelle) wirds etwas schwieriger, je nachdem was du ausliest.
wenn du nur Texte als Ergebnis haben kannst, gehts einfach mit
Code: Alles auswählen
=deineFormel&""

hast du Zahlen oder Texte und Zahlen gemischt, geht das nicht, weil dann die Zahlen in Texte gewandelt werden.
dann müsste die Formel so aussehen:
Code: Alles auswählen
=Wenn(deineFormel="";"";deineFormel)


und das ganze kombiniert:
Code: Alles auswählen
=WennFehler(Wenn(deineFormel="";"";deineFormel);"")


Gruß Daniel
slowboarder
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 25932
Registriert: 18. Apr 2009, 13:33


Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: bp011ysp, christian_b_, TommyDerWalker und 34 Gäste