HERBERS Excel-Forum - das Archiv

Thema: #WERT! ignorieren | Herbers Excel-Forum

#WERT! ignorieren
Gordon

Moin Moin,
ich habe zwei Excel-Blätter, wo per Makro Zelleninhalte von der einen in die andere übertragen werden. Als Beispiel:
Blatt2.Range("A1").Value = Blatt1.Range("A1").Value
Blatt2.Range("B1").Value = Blatt1.Range("B1").Value
Blatt2.Range("C1").Value = Blatt1.Range("C1").Value
......
.....
....
Es handelt sich hier im Zahlenwerte und das ganze läuft in einer DO-Schleife. Leider es so, dass auf Blatt1 manchmal in den Zellen auch der Fehlerwert '#WERT!' stehen kann. Wenn dem so ist, kommt immer eine Fehlermeldung und die Prozedur bricht ab.
Ich fände es nun schön, wenn dort dieser Fehlerwert steht, dass dieser ignoriert wird und stattdessen die Zelle auf Blatt2 leer bleibt und das Makro weiterläuft.
Ich hatte es schon so versucht, dass ich mit einer IF-Abfrage vorher schaue, ob der Wert in der jeweiligen Zelle gleich '#WERT!' ist. Leider hat das nicht funktioniert. Hat da jemand vielleicht eine bessere Idee?
Besten Gruß
Gordon

geht doch mit Formeln
Matthias

Hallo
Userbild
Gruß Matthias
AW: geht doch mit Formeln
Detlef

Hallo Gordon,
If IsError(Blatt1.Range("B1").Value) Then
'nichts tun
Else
Blatt2.Range("B1").Value = Blatt1.Range("B1").Value
End If
Gruß Detlef
AW: #WERT! ignorieren
Oberschlumpf

Hi Gordon
Hast du auch schon das versucht (ungetestet):

If Blatt1.Range("A1").Text <> "#WERT!" Then
Blatt2.Range("A1").Value = Blatt1.Range("A1").Value
End If

Dieses Bsp gilt jetzt nur für die Zelle(n) A1.
Kann sein, dass der Code angepasst werden muss, aber wir kennen deine Do/Loop-Schleife nicht.
Hilfts denn?
Ciao
Thorsten
vielleicht geht es so,...
Tino

Hallo,
wenn ich Deinen Code richtig verstanden habe, müsste es so gehen.
Sub test()
Dim MeAR()
Dim A&, LLetzte&
Dim Blatt1 As Worksheet, Blatt2 As Worksheet
Set Blatt1 = Sheets("Tabelle1")
Set Blatt2 = Sheets("Tabelle2")
With Blatt1
LLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
If LLetzte > 1 Then
MeAR = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)).Value2
Else
ReDim MeAR(1 To 1, 1 To 1)
MeAR(1, 1) = .Cells(1, 1)
End If
End With
For A = 1 To UBound(MeAR)
If IsError(MeAR(A, 1)) Then MeAR(A, 1) = Empty
Next A
With Blatt2
.Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)).ClearContents
.Cells(1, 1).Resize(UBound(MeAR)) = MeAR
End With
End Sub
Gruß Tino